Java API minor fixes
authorAndrey Pavlenko <no@email>
Fri, 23 Mar 2012 15:18:05 +0000 (15:18 +0000)
committerAndrey Pavlenko <no@email>
Fri, 23 Mar 2012 15:18:05 +0000 (15:18 +0000)
modules/java/android_test/src/org/opencv/test/core/CoreTest.java
modules/java/android_test/src/org/opencv/test/imgproc/ImgprocTest.java
modules/java/gen_java.py
modules/java/src/java/utils+Converters.java

index 6dd7ebe..bbcb97a 100644 (file)
@@ -1190,23 +1190,18 @@ public class CoreTest extends OpenCVTestCase {
     }
 
     public void testMeanStdDevMatMatMat() {
-        Mat mean = new Mat();
-        Mat stddev = new Mat();
+        List<Double> mean   = new ArrayList<Double>();
+        List<Double> stddev = new ArrayList<Double>();
 
         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<Double> expectedMean = Arrays.asList( new Double[]
+               {105.3989906311035, 99.56269836425781, 179.7303047180176} );
+        List<Double> 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<Double> mean   = new ArrayList<Double>();
+        List<Double> stddev = new ArrayList<Double>();
 
         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<Double> expectedMean = Arrays.asList( new Double[] {33d} );
+        List<Double> expectedDev = Arrays.asList( new Double[] {0d} );
+                
+        assertListEquals(expectedMean, mean, EPS);
+        assertListEquals(expectedDev, stddev, EPS);
     }
 
     public void testMerge() {
index fbf62c3..8f1b6f8 100644 (file)
@@ -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);
-
-        Imgproc.approxPolyDP(curve, dst, 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<Point> curve = new ArrayList<Point>(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<Point> approxCurve = new ArrayList<Point>();
+
+        Imgproc.approxPolyDP(curve, approxCurve, EPS, true);
+
+        List<Point> approxCurveGold =  new ArrayList<Point>(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() {
index ffd1ce9..7561582 100644 (file)
@@ -508,7 +508,7 @@ func_arg_fix = {
         'polylines' : { 'pts' : 'vector_vector_Point', },\r
         'fillConvexPoly' : { 'points' : 'vector_Point', },\r
         'boundingRect' : { 'points' : 'vector_Point', },\r
-        #'approxPolyDP' : { 'curve' : 'vector_Point2f', 'CV_OUT approxCurve' : 'vector_Point2f', },\r
+        'approxPolyDP' : { 'curve' : 'vector_Point2f', 'approxCurve' : 'vector_Point2f', },\r
         'arcLength' : { 'curve' : 'vector_Point2f', },\r
         'isContourConvex' : { 'contour' : 'vector_Point2f', },\r
         'pointPolygonTest' : { 'contour' : 'vector_Point2f', },\r
@@ -518,7 +518,7 @@ func_arg_fix = {
         'vconcat' : { 'src' : 'vector_Mat', },\r
         'undistortPoints' : { 'src' : 'vector_Point2d', 'dst' : 'vector_Point2d' },\r
         'checkRange' : {'pos' : '*'},\r
-        #'meanStdDev' : {'mean' : 'Scalar', 'stddev' : 'Scalar'},\r
+        'meanStdDev' : {'mean' : 'vector_double', 'stddev' : 'vector_double'},\r
     }, # '', i.e. no class\r
 } # func_arg_fix\r
 \r
index 10901d8..4ebbd1b 100644 (file)
@@ -547,6 +547,22 @@ public class Converters {
         return res;\r
     }\r
 \r
+    public static void Mat_to_vector_double(Mat m, List<Double> ds) {\r
+        if (ds == null)\r
+            throw new java.lang.IllegalArgumentException("ds == null");\r
+        int count = m.rows();\r
+        if (CvType.CV_64FC1 != m.type() || m.cols() != 1)\r
+            throw new java.lang.IllegalArgumentException(\r
+                    "CvType.CV_64FC1 != m.type() ||  m.cols()!=1\n" + m);\r
+\r
+        ds.clear();\r
+        double[] buff = new double[count];\r
+        m.get(0, 0, buff);\r
+        for (int i = 0; i < count; i++) {\r
+            ds.add(buff[i]);\r
+        }\r
+    }\r
+\r
     public static Mat vector_DMatch_to_Mat(List<DMatch> matches) {\r
         Mat res;\r
         int count = (matches != null) ? matches.size() : 0;\r