Some of code review feedbacks addressed: CvType moved from Mat, new Mat c-tor, sample...
authorAndrey Pavlenko <no@email>
Tue, 5 Jul 2011 14:50:16 +0000 (14:50 +0000)
committerAndrey Pavlenko <no@email>
Tue, 5 Jul 2011 14:50:16 +0000 (14:50 +0000)
modules/java/gen_java.py
modules/java/src/java/CvType.java [new file with mode: 0644]
modules/java/src/java/Mat.java
samples/android/1-java/src/org/opencv/samples/s1/Sample1View.java
samples/android/4-mixed/src/org/opencv/samples/s4/Sample4View.java

index 6547ddc..faa5d79 100644 (file)
@@ -245,8 +245,12 @@ public class %(module)s {
        static {\r
                System.loadLibrary("opencv_java");\r
        }\r
+""" % {"module" : module} )\r
 \r
-    public static final int\r
+        if module == "core":\r
+            self.java_code.write(\\r
+"""\r
+    private static final int\r
             CV_8U  = 0,\r
             CV_8S  = 1,\r
             CV_16U = 2,\r
@@ -254,15 +258,21 @@ public class %(module)s {
             CV_32S = 4,\r
             CV_32F = 5,\r
             CV_64F = 6,\r
-            CV_USRTYPE1 = 7,\r
+            CV_USRTYPE1 = 7;\r
+\r
+""" )\r
+\r
+        if module == "imgproc":\r
+            self.java_code.write(\\r
+"""\r
+    public static final int\r
             IPL_BORDER_CONSTANT = 0,\r
             IPL_BORDER_REPLICATE = 1,\r
             IPL_BORDER_REFLECT = 2,\r
             IPL_BORDER_WRAP = 3,\r
             IPL_BORDER_REFLECT_101 = 4,\r
             IPL_BORDER_TRANSPARENT = 5;\r
-""" % {"module" : module} )\r
-\r
+""" )\r
         # cpp module header\r
         self.cpp_code.write(\\r
 """// This file is auto-generated, please don't edit!\r
diff --git a/modules/java/src/java/CvType.java b/modules/java/src/java/CvType.java
new file mode 100644 (file)
index 0000000..fa94806
--- /dev/null
@@ -0,0 +1,130 @@
+package org.opencv;\r
+\r
+\r
+public final class CvType {\r
+       \r
+       // predefined type constants\r
+       public static final CvType\r
+       CV_8UC1  = CV_8UC(1),  CV_8UC2  = CV_8UC(2),  CV_8UC3  = CV_8UC(3),  CV_8UC4  = CV_8UC(4),\r
+       CV_8SC1  = CV_8SC(1),  CV_8SC2  = CV_8SC(2),  CV_8SC3  = CV_8SC(3),  CV_8SC4  = CV_8SC(4),\r
+       CV_16UC1 = CV_16UC(1), CV_16UC2 = CV_16UC(2), CV_16UC3 = CV_16UC(3), CV_16UC4 = CV_16UC(4),\r
+       CV_16SC1 = CV_16SC(1), CV_16SC2 = CV_16SC(2), CV_16SC3 = CV_16SC(3), CV_16SC4 = CV_16SC(4),\r
+       CV_32SC1 = CV_32SC(1), CV_32SC2 = CV_32SC(2), CV_32SC3 = CV_32SC(3), CV_32SC4 = CV_32SC(4),\r
+       CV_32FC1 = CV_32FC(1), CV_32FC2 = CV_32FC(2), CV_32FC3 = CV_32FC(3), CV_32FC4 = CV_32FC(4),\r
+       CV_64FC1 = CV_64FC(1), CV_64FC2 = CV_64FC(2), CV_64FC3 = CV_64FC(3), CV_64FC4 = CV_64FC(4);\r
+       \r
+       // type depth constants\r
+       public static final int CV_8U  = 0, \r
+                                                       CV_8S  = 1, \r
+                                                       CV_16U = 2, \r
+                                                       CV_16S = 3, \r
+                                                       CV_32S = 4, \r
+                                                       CV_32F = 5, \r
+                                                       CV_64F = 6, \r
+                                                       CV_USRTYPE1=7;\r
+       \r
+       private static final int CV_CN_MAX = 512, CV_CN_SHIFT = 3, CV_DEPTH_MAX = (1 << CV_CN_SHIFT);\r
+\r
+       private final int value;\r
+       \r
+       protected CvType(int depth, int channels) {\r
+               if(channels<=0 || channels>=CV_CN_MAX) {\r
+                       throw new java.lang.UnsupportedOperationException(\r
+                                       "Channels count should be 1.." + (CV_CN_MAX-1) );\r
+               }\r
+               if(depth<0 || depth>=CV_DEPTH_MAX) {\r
+                       throw new java.lang.UnsupportedOperationException(\r
+                                       "Data type depth should be 0.." + (CV_DEPTH_MAX-1) );\r
+               }\r
+               value  = (depth & (CV_DEPTH_MAX-1)) + ((channels-1) << CV_CN_SHIFT); \r
+       }\r
+\r
+       protected CvType(int val) { value = val; }\r
+\r
+       public static final CvType CV_8UC(int ch)  { return new CvType(CV_8U, ch); }\r
+       \r
+       public static final CvType CV_8SC(int ch)  { return new CvType(CV_8S, ch); }\r
+       \r
+       public static final CvType CV_16UC(int ch) { return new CvType(CV_16U, ch); }\r
+       \r
+       public static final CvType CV_16SC(int ch) { return new CvType(CV_16S, ch); }\r
+       \r
+       public static final CvType CV_32SC(int ch) { return new CvType(CV_32S, ch); }\r
+       \r
+       public static final CvType CV_32FC(int ch) { return new CvType(CV_32F, ch); }\r
+       \r
+       public static final CvType CV_64FC(int ch) { return new CvType(CV_64F, ch); }\r
+       \r
+       public final int toInt() { return value; }\r
+       \r
+       public final int channels() { return (value >> CV_CN_SHIFT) + 1; }\r
+       \r
+       public final int depth() { return value & (CV_DEPTH_MAX-1); }\r
+       \r
+       public final boolean isInteger() { return depth() < CV_32F; }\r
+\r
+       public final int CV_ELEM_SIZE() { \r
+               switch (depth()) {\r
+                       case CV_8U:\r
+                       case CV_8S:\r
+                               return channels();\r
+                       case CV_16U:\r
+                       case CV_16S:\r
+                               return 2 * channels();\r
+                       case CV_32S:\r
+                       case CV_32F:\r
+                               return 4 * channels();\r
+                       case CV_64F:\r
+                               return 8 * channels();\r
+                       default:\r
+                               throw new java.lang.UnsupportedOperationException(\r
+                                               "Unsupported CvType value: " + value );\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public final String toString() {\r
+               String s;\r
+               switch (depth()) {\r
+                       case CV_8U:\r
+                               s = "CV_8U";\r
+                               break;\r
+                       case CV_8S:\r
+                               s = "CV_8S";\r
+                               break;\r
+                       case CV_16U:\r
+                               s = "CV_16U";\r
+                               break;\r
+                       case CV_16S:\r
+                               s = "CV_16S";\r
+                               break;\r
+                       case CV_32S:\r
+                               s = "CV_32S";\r
+                               break;\r
+                       case CV_32F:\r
+                               s = "CV_32F";\r
+                               break;\r
+                       case CV_64F:\r
+                               s = "CV_64F";\r
+                               break;\r
+                       default:\r
+                               s = "CV_USRTYPE1";\r
+               }\r
+               \r
+               int ch = channels();\r
+               if(ch<=4) return s + "C" + ch;\r
+               else return s + "C(" + ch + ")";\r
+       }\r
+       \r
+       // hashCode() has to be overridden if equals() is\r
+       @Override\r
+       public final int hashCode() { return value; }\r
+\r
+       @Override\r
+       public final boolean equals(Object obj) {\r
+               if (this == obj) return true;\r
+               if ( !(obj instanceof CvType) ) return false;\r
+               CvType other = (CvType) obj;\r
+               return value == other.value;\r
+       }\r
+}\r
index 122bb82..732cc93 100644 (file)
@@ -1,135 +1,7 @@
 package org.opencv;\r
 \r
-//import android.util.Log;\r
-\r
 public class Mat {\r
 \r
-       public static class CvType {\r
-               \r
-               // predefined type constants\r
-               public static final CvType\r
-               CV_8UC1  = CV_8UC(1),  CV_8UC2  = CV_8UC(2),  CV_8UC3  = CV_8UC(3),  CV_8UC4  = CV_8UC(4),\r
-               CV_8SC1  = CV_8SC(1),  CV_8SC2  = CV_8SC(2),  CV_8SC3  = CV_8SC(3),  CV_8SC4  = CV_8SC(4),\r
-               CV_16UC1 = CV_16UC(1), CV_16UC2 = CV_16UC(2), CV_16UC3 = CV_16UC(3), CV_16UC4 = CV_16UC(4),\r
-               CV_16SC1 = CV_16SC(1), CV_16SC2 = CV_16SC(2), CV_16SC3 = CV_16SC(3), CV_16SC4 = CV_16SC(4),\r
-               CV_32SC1 = CV_32SC(1), CV_32SC2 = CV_32SC(2), CV_32SC3 = CV_32SC(3), CV_32SC4 = CV_32SC(4),\r
-               CV_32FC1 = CV_32FC(1), CV_32FC2 = CV_32FC(2), CV_32FC3 = CV_32FC(3), CV_32FC4 = CV_32FC(4),\r
-               CV_64FC1 = CV_64FC(1), CV_64FC2 = CV_64FC(2), CV_64FC3 = CV_64FC(3), CV_64FC4 = CV_64FC(4);\r
-               \r
-               // type depth constants\r
-               public static final int CV_8U  = 0, \r
-                                                               CV_8S  = 1, \r
-                                                               CV_16U = 2, \r
-                                                               CV_16S = 3, \r
-                                                               CV_32S = 4, \r
-                                                               CV_32F = 5, \r
-                                                               CV_64F = 6, \r
-                                                               CV_USRTYPE1=7;\r
-               \r
-               private static final int CV_CN_MAX = 512, CV_CN_SHIFT = 3, CV_DEPTH_MAX = (1 << CV_CN_SHIFT);\r
-\r
-               private final int value;\r
-               \r
-               protected CvType(int depth, int channels) {\r
-                       if(channels<=0 || channels>=CV_CN_MAX) {\r
-                               throw new java.lang.UnsupportedOperationException(\r
-                                               "Channels count should be 1.." + (CV_CN_MAX-1) );\r
-                       }\r
-                       if(depth<0 || depth>=CV_DEPTH_MAX) {\r
-                               throw new java.lang.UnsupportedOperationException(\r
-                                               "Data type depth should be 0.." + (CV_DEPTH_MAX-1) );\r
-                       }\r
-                       value  = (depth & (CV_DEPTH_MAX-1)) + ((channels-1) << CV_CN_SHIFT); \r
-               }\r
-\r
-               protected CvType(int val) { value = val; }\r
-\r
-               public static final CvType CV_8UC(int ch)  { return new CvType(CV_8U, ch); }\r
-               \r
-               public static final CvType CV_8SC(int ch)  { return new CvType(CV_8S, ch); }\r
-               \r
-               public static final CvType CV_16UC(int ch) { return new CvType(CV_16U, ch); }\r
-               \r
-               public static final CvType CV_16SC(int ch) { return new CvType(CV_16S, ch); }\r
-               \r
-               public static final CvType CV_32SC(int ch) { return new CvType(CV_32S, ch); }\r
-               \r
-               public static final CvType CV_32FC(int ch) { return new CvType(CV_32F, ch); }\r
-               \r
-               public static final CvType CV_64FC(int ch) { return new CvType(CV_64F, ch); }\r
-               \r
-               public final int toInt() { return value; }\r
-               \r
-               public final int channels() { return (value >> CV_CN_SHIFT) + 1; }\r
-               \r
-               public final int depth() { return value & (CV_DEPTH_MAX-1); }\r
-               \r
-               public final boolean isInteger() { return depth() < CV_32F; }\r
-\r
-               public final int CV_ELEM_SIZE() { \r
-                       int depth = value & (CV_DEPTH_MAX-1);\r
-                       switch (depth) {\r
-                               case CV_8U:\r
-                               case CV_8S:\r
-                                       return channels();\r
-                               case CV_16U:\r
-                               case CV_16S:\r
-                                       return 2 * channels();\r
-                               case CV_32S:\r
-                               case CV_32F:\r
-                                       return 4 * channels();\r
-                               case CV_64F:\r
-                                       return 8 * channels();\r
-                               default:\r
-                                       throw new java.lang.UnsupportedOperationException(\r
-                                                       "Unsupported CvType value: " + value );\r
-                       }\r
-               }\r
-\r
-               @Override\r
-               public final String toString() {\r
-                       String s;\r
-                       switch (depth()) {\r
-                               case CV_8U:\r
-                                       s = "CV_8U";\r
-                                       break;\r
-                               case CV_8S:\r
-                                       s = "CV_8S";\r
-                                       break;\r
-                               case CV_16U:\r
-                                       s = "CV_16U";\r
-                                       break;\r
-                               case CV_16S:\r
-                                       s = "CV_16S";\r
-                                       break;\r
-                               case CV_32S:\r
-                                       s = "CV_32S";\r
-                                       break;\r
-                               case CV_32F:\r
-                                       s = "CV_32F";\r
-                                       break;\r
-                               case CV_64F:\r
-                                       s = "CV_64F";\r
-                                       break;\r
-                               default:\r
-                                       s = "CV_USRTYPE1";\r
-                       }\r
-                       \r
-                       return s + "C(" + channels() + ")";\r
-               }\r
-               \r
-               // hashCode() has to be overridden if equals() is\r
-               @Override\r
-               public final int hashCode() { return value; }\r
-\r
-               @Override\r
-               public final boolean equals(Object obj) {\r
-                       if (this == obj) return true;\r
-                       if ( !(obj instanceof CvType) ) return false;\r
-                       CvType other = (CvType) obj;\r
-                       return value == other.value;\r
-               }\r
-       }\r
 \r
        protected Mat(long nativeMat) {\r
                /*if(nativeMat == 0) \r
@@ -145,6 +17,10 @@ public class Mat {
                this( nCreateMat(rows, cols, type.toInt()) );\r
        }\r
 \r
+       public Mat(int rows, int cols, int depth) {\r
+               this( rows, cols, new CvType(depth, 1) );\r
+       }\r
+\r
        public Mat(int rows, int cols, CvType type, double v0, double v1, double v2, double v3) {\r
                this( nCreateMat(rows, cols, type.toInt(), v0, v1, v2, v3) );\r
        }\r
index 26fb6cd..daa5583 100644 (file)
@@ -9,6 +9,7 @@ import android.util.Log;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 
+import org.opencv.CvType;
 import org.opencv.Mat;
 import org.opencv.Point;
 import org.opencv.Scalar;
@@ -64,16 +65,16 @@ class Sample1View extends SurfaceView implements SurfaceHolder.Callback, Runnabl
             
             // initialize all required Mats before usage to minimize number of auxiliary jni calls
             if(mYuv != null) mYuv.dispose();
-            mYuv = new Mat(mFrameHeight+mFrameHeight/2, mFrameWidth, Mat.CvType.CV_8UC1);
+            mYuv = new Mat(mFrameHeight+mFrameHeight/2, mFrameWidth, CvType.CV_8UC1);
             
             if(mRgba != null) mRgba.dispose();
-            mRgba = new Mat(mFrameHeight, mFrameWidth, Mat.CvType.CV_8UC4);
+            mRgba = new Mat(mFrameHeight, mFrameWidth, CvType.CV_8UC4);
             
             if(mGraySubmat != null) mGraySubmat.dispose();
             mGraySubmat = mYuv.submat(0, mFrameHeight, 0, mFrameWidth); 
 
             if(mIntermediateMat != null) mIntermediateMat.dispose();
-            mIntermediateMat = new Mat(mFrameHeight, mFrameWidth, Mat.CvType.CV_8UC1);
+            mIntermediateMat = new Mat(mFrameHeight, mFrameWidth, CvType.CV_8UC1);
         }
     }
 
@@ -151,7 +152,7 @@ class Sample1View extends SurfaceView implements SurfaceHolder.Callback, Runnabl
                 imgproc.cvtColor(mIntermediateMat, mRgba, imgproc.CV_GRAY2BGRA, 4);
                 break;
             case Sample1Java.VIEW_MODE_SOBEL:
-                imgproc.Sobel(mGraySubmat, mIntermediateMat, core.CV_8U, 1, 1);
+                imgproc.Sobel(mGraySubmat, mIntermediateMat, CvType.CV_8U, 1, 1);
                 core.convertScaleAbs(mIntermediateMat, mIntermediateMat, 8);
                 imgproc.cvtColor(mIntermediateMat, mRgba, imgproc.CV_GRAY2BGRA, 4);
                 break;
index 8cbbe03..ca5010b 100644 (file)
@@ -9,6 +9,7 @@ import android.util.Log;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 
+import org.opencv.CvType;
 import org.opencv.Mat;
 import org.opencv.Size;
 import org.opencv.core;
@@ -62,16 +63,16 @@ class Sample4View extends SurfaceView implements SurfaceHolder.Callback, Runnabl
             
             // initialize all required Mats before usage to minimize number of auxiliary jni calls
             if(mYuv != null) mYuv.dispose();
-            mYuv = new Mat(mFrameHeight+mFrameHeight/2, mFrameWidth, Mat.CvType.CV_8UC1);
+            mYuv = new Mat(mFrameHeight+mFrameHeight/2, mFrameWidth, CvType.CV_8UC1);
             
             if(mRgba != null) mRgba.dispose();
-            mRgba = new Mat(mFrameHeight, mFrameWidth, Mat.CvType.CV_8UC4);
+            mRgba = new Mat(mFrameHeight, mFrameWidth, CvType.CV_8UC4);
             
             if(mGraySubmat != null) mGraySubmat.dispose();
             mGraySubmat = mYuv.submat(0, mFrameHeight, 0, mFrameWidth); 
 
             if(mIntermediateMat != null) mIntermediateMat.dispose();
-            mIntermediateMat = new Mat(mFrameHeight, mFrameWidth, Mat.CvType.CV_8UC1);
+            mIntermediateMat = new Mat(mFrameHeight, mFrameWidth, CvType.CV_8UC1);
         }
     }
 
@@ -148,7 +149,7 @@ class Sample4View extends SurfaceView implements SurfaceHolder.Callback, Runnabl
                 imgproc.cvtColor(mIntermediateMat, mRgba, imgproc.CV_GRAY2BGRA, 4);
                 break;
             case Sample4Mixed.VIEW_MODE_SOBEL:
-                imgproc.Sobel(mGraySubmat, mIntermediateMat, core.CV_8U, 1, 1);
+                imgproc.Sobel(mGraySubmat, mIntermediateMat, CvType.CV_8U, 1, 1);
                 core.convertScaleAbs(mIntermediateMat, mIntermediateMat, 8);
                 imgproc.cvtColor(mIntermediateMat, mRgba, imgproc.CV_GRAY2BGRA, 4);
                 break;