Merge pull request #13956 from komakai:java-mat-class-improvements
* Expose more C++ functionality in the Java wrapper of the Mat class In particular expose methods for handling Mat with more than 2 dimensions * add constructors taking an array of dimension sizes * add constructor taking an existing Mat and an array of Ranges * add override of the create method taking an array of dimension sizes * add overrides of the ones and zeros methods taking an array of dimension sizes * add override of the submat method taking an array of ranges * add overrides of put and get taking arrays of indices * add wrapper for copySize method * fix crash in the JNI wrapper of the reshape(int cn, int[] newshape) method * add test for each method added to Mat.java * Fix broken test
This commit is contained in:
committed by
Alexander Alekhin
parent
7e8cc580c9
commit
11dbd86aa3
@@ -99,6 +99,8 @@ public class OpenCVTestCase extends TestCase {
|
||||
protected Mat rgbLena;
|
||||
protected Mat grayChess;
|
||||
|
||||
protected Mat gray255_32f_3d;
|
||||
|
||||
protected Mat v1;
|
||||
protected Mat v2;
|
||||
|
||||
@@ -149,6 +151,8 @@ public class OpenCVTestCase extends TestCase {
|
||||
rgbLena = Imgcodecs.imread(OpenCVTestRunner.LENA_PATH);
|
||||
grayChess = Imgcodecs.imread(OpenCVTestRunner.CHESS_PATH, 0);
|
||||
|
||||
gray255_32f_3d = new Mat(new int[]{matSize, matSize, matSize}, CvType.CV_32F, new Scalar(255.0));
|
||||
|
||||
v1 = new Mat(1, 3, CvType.CV_32F);
|
||||
v1.put(0, 0, 1.0, 3.0, 2.0);
|
||||
v2 = new Mat(1, 3, CvType.CV_32F);
|
||||
@@ -184,6 +188,7 @@ public class OpenCVTestCase extends TestCase {
|
||||
rgba128.release();
|
||||
rgbLena.release();
|
||||
grayChess.release();
|
||||
gray255_32f_3d.release();
|
||||
v1.release();
|
||||
v2.release();
|
||||
|
||||
@@ -442,8 +447,24 @@ public class OpenCVTestCase extends TestCase {
|
||||
assertEquals(msg, expected.z, actual.z, eps);
|
||||
}
|
||||
|
||||
static private boolean dimensionsEqual(Mat expected, Mat actual) {
|
||||
if (expected.dims() != actual.dims()) {
|
||||
return false;
|
||||
}
|
||||
if (expected.dims() > 2) {
|
||||
for (int i = 0; i < expected.dims(); i++) {
|
||||
if (expected.size(i) != actual.size(i)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return expected.cols() == actual.cols() && expected.rows() == actual.rows();
|
||||
}
|
||||
}
|
||||
|
||||
static private void compareMats(Mat expected, Mat actual, boolean isEqualityMeasured) {
|
||||
if (expected.type() != actual.type() || expected.cols() != actual.cols() || expected.rows() != actual.rows()) {
|
||||
if (expected.type() != actual.type() || !dimensionsEqual(expected, actual)) {
|
||||
throw new UnsupportedOperationException("Can not compare " + expected + " and " + actual);
|
||||
}
|
||||
|
||||
@@ -471,7 +492,7 @@ public class OpenCVTestCase extends TestCase {
|
||||
}
|
||||
|
||||
static private void compareMats(Mat expected, Mat actual, double eps, boolean isEqualityMeasured) {
|
||||
if (expected.type() != actual.type() || expected.cols() != actual.cols() || expected.rows() != actual.rows()) {
|
||||
if (expected.type() != actual.type() || !dimensionsEqual(expected, actual)) {
|
||||
throw new UnsupportedOperationException("Can not compare " + expected + " and " + actual);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user