diff --git a/modules/java/android_test/src/org/opencv/test/core/CoreTest.java b/modules/java/android_test/src/org/opencv/test/core/CoreTest.java index 6dd7ebeb85..bbcb97adf3 100644 --- a/modules/java/android_test/src/org/opencv/test/core/CoreTest.java +++ b/modules/java/android_test/src/org/opencv/test/core/CoreTest.java @@ -1190,23 +1190,18 @@ public class CoreTest extends OpenCVTestCase { } public void testMeanStdDevMatMatMat() { - Mat mean = new Mat(); - Mat stddev = new Mat(); + List mean = new ArrayList(); + List stddev = new ArrayList(); Core.meanStdDev(rgbLena, mean, stddev); - Mat expectedMean = new Mat(3, 1, CvType.CV_64F) { - { - put(0, 0, 105.3989906311035, 99.56269836425781, 179.7303047180176); - } - }; - Mat expectedDev = new Mat(3, 1, CvType.CV_64F) { - { - put(0, 0, 33.74205485167219, 52.8734582803278, 49.01569488056406); - } - }; - assertMatEqual(expectedMean, mean, EPS); - assertMatEqual(expectedDev, stddev, EPS); + List expectedMean = Arrays.asList( new Double[] + {105.3989906311035, 99.56269836425781, 179.7303047180176} ); + List expectedDev = Arrays.asList( new Double[] + {33.74205485167219, 52.8734582803278, 49.01569488056406} ); + + assertListEquals(expectedMean, mean, EPS); + assertListEquals(expectedDev, stddev, EPS); } public void testMeanStdDevMatMatMatMat() { @@ -1215,15 +1210,16 @@ public class CoreTest extends OpenCVTestCase { Mat mask = gray0.clone(); submat = mask.submat(0, mask.rows() / 2, 0, mask.cols() / 2); submat.setTo(new Scalar(1)); - Mat mean = new Mat(); - Mat stddev = new Mat(); + List mean = new ArrayList(); + List stddev = new ArrayList(); Core.meanStdDev(grayRnd, mean, stddev, mask); - Mat expectedMean = new Mat(1, 1, CvType.CV_64F, new Scalar(33)); - Mat expectedDev = new Mat(1, 1, CvType.CV_64F, new Scalar(0)); - assertMatEqual(expectedMean, mean, EPS); - assertMatEqual(expectedDev, stddev, EPS); + List expectedMean = Arrays.asList( new Double[] {33d} ); + List expectedDev = Arrays.asList( new Double[] {0d} ); + + assertListEquals(expectedMean, mean, EPS); + assertListEquals(expectedDev, stddev, EPS); } public void testMerge() { diff --git a/modules/java/android_test/src/org/opencv/test/imgproc/ImgprocTest.java b/modules/java/android_test/src/org/opencv/test/imgproc/ImgprocTest.java index fbf62c342f..8f1b6f8213 100644 --- a/modules/java/android_test/src/org/opencv/test/imgproc/ImgprocTest.java +++ b/modules/java/android_test/src/org/opencv/test/imgproc/ImgprocTest.java @@ -141,17 +141,23 @@ public class ImgprocTest extends OpenCVTestCase { } public void testApproxPolyDP() { - Mat curve = new Mat(1, 5, CvType.CV_32FC2); - curve.put(0, 0, 1, 3, 2, 4, 3, 5, 4, 4, 5, 3); + List curve = new ArrayList(5); + curve.add(new Point(1, 3)); + curve.add(new Point(2, 4)); + curve.add(new Point(3, 5)); + curve.add(new Point(4, 4)); + curve.add(new Point(5, 3)); + + List approxCurve = new ArrayList(); - Imgproc.approxPolyDP(curve, dst, EPS, true); + Imgproc.approxPolyDP(curve, approxCurve, EPS, true); - Mat approxCurve = new Mat(3, 1, CvType.CV_32FC2) { - { - put(0, 0, 1, 3, 3, 5, 5, 3); - } - }; - assertMatEqual(approxCurve, dst, EPS); + List approxCurveGold = new ArrayList(3); + approxCurveGold.add(new Point(1, 3)); + approxCurveGold.add(new Point(3, 5)); + approxCurveGold.add(new Point(5, 3)); + + assertListPointEquals(approxCurve, approxCurveGold, EPS); } public void testArcLength() { diff --git a/modules/java/gen_java.py b/modules/java/gen_java.py index ffd1ce9441..7561582ff2 100644 --- a/modules/java/gen_java.py +++ b/modules/java/gen_java.py @@ -508,7 +508,7 @@ func_arg_fix = { 'polylines' : { 'pts' : 'vector_vector_Point', }, 'fillConvexPoly' : { 'points' : 'vector_Point', }, 'boundingRect' : { 'points' : 'vector_Point', }, - #'approxPolyDP' : { 'curve' : 'vector_Point2f', 'CV_OUT approxCurve' : 'vector_Point2f', }, + 'approxPolyDP' : { 'curve' : 'vector_Point2f', 'approxCurve' : 'vector_Point2f', }, 'arcLength' : { 'curve' : 'vector_Point2f', }, 'isContourConvex' : { 'contour' : 'vector_Point2f', }, 'pointPolygonTest' : { 'contour' : 'vector_Point2f', }, @@ -518,7 +518,7 @@ func_arg_fix = { 'vconcat' : { 'src' : 'vector_Mat', }, 'undistortPoints' : { 'src' : 'vector_Point2d', 'dst' : 'vector_Point2d' }, 'checkRange' : {'pos' : '*'}, - #'meanStdDev' : {'mean' : 'Scalar', 'stddev' : 'Scalar'}, + 'meanStdDev' : {'mean' : 'vector_double', 'stddev' : 'vector_double'}, }, # '', i.e. no class } # func_arg_fix diff --git a/modules/java/src/java/utils+Converters.java b/modules/java/src/java/utils+Converters.java index 10901d854b..4ebbd1b8a8 100644 --- a/modules/java/src/java/utils+Converters.java +++ b/modules/java/src/java/utils+Converters.java @@ -547,6 +547,22 @@ public class Converters { return res; } + public static void Mat_to_vector_double(Mat m, List ds) { + if (ds == null) + throw new java.lang.IllegalArgumentException("ds == null"); + int count = m.rows(); + if (CvType.CV_64FC1 != m.type() || m.cols() != 1) + throw new java.lang.IllegalArgumentException( + "CvType.CV_64FC1 != m.type() || m.cols()!=1\n" + m); + + ds.clear(); + double[] buff = new double[count]; + m.get(0, 0, buff); + for (int i = 0; i < count; i++) { + ds.add(buff[i]); + } + } + public static Mat vector_DMatch_to_Mat(List matches) { Mat res; int count = (matches != null) ? matches.size() : 0;