From: Andrey Pavlenko Date: Wed, 27 Jul 2011 14:09:49 +0000 (+0000) Subject: Java API generator: pointers handling fixed, KeyPoint manual port added X-Git-Tag: accepted/2.0/20130307.220821~2262 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5ba826d297b8fcb4a9af8faddda58daeaadefa5c;p=profile%2Fivi%2Fopencv.git Java API generator: pointers handling fixed, KeyPoint manual port added --- diff --git a/modules/java/gen_java.py b/modules/java/gen_java.py index ff344d6..5640102 100644 --- a/modules/java/gen_java.py +++ b/modules/java/gen_java.py @@ -11,6 +11,8 @@ class_ignore_list = ( "FileNode", "FileStorage", #highgui "VideoWriter", "VideoCapture", + #feature2d + "KeyPoint", ) const_ignore_list = ( @@ -207,6 +209,11 @@ type_dict = { "Point3d" : { "j_type" : "Point", "jn_args" : (("double", ".x"), ("double", ".y"), ("double", ".z")), "jni_var" : "Point3d %(n)s(%(n)s_x, %(n)s_y, %(n)s_z)", "jni_type" : "jdoubleArray", "suffix" : "DDD"}, + "KeyPoint": { "j_type" : "KeyPoint", "jn_args" : (("float", ".x"), ("float", ".y"), ("float", ".size"), + ("float", ".angle"), ("float", ".response"), ("int", ".octave"), ("int", ".class_id")), + "jni_var" : "KeyPoint %(n)s(%(n)s_x, %(n)s_y, %(n)s_size, %(n)s_angle, %(n)s_response, %(n)s_octave, %(n)s_class_id)", + "jni_type" : "jdoubleArray", + "suffix" : "FFFFFII"}, "Rect" : { "j_type" : "Rect", "jn_args" : (("int", ".x"), ("int", ".y"), ("int", ".width"), ("int", ".height")), "jni_var" : "Rect %(n)s(%(n)s_x, %(n)s_y, %(n)s_width, %(n)s_height)", "jni_type" : "jdoubleArray", "suffix" : "IIII"}, @@ -859,7 +866,10 @@ extern "C" { self.get_imports(fi.classname, fi.ctype) for a in args: self.get_imports(fi.classname, a.ctype) - suffix += type_dict[a.ctype].get("suffix") or "" + if a.pointer: + suffix += "_3D" + else: + suffix += type_dict[a.ctype].get("suffix") or "" if "vector" in a.ctype: # pass as Mat jn_args.append ( ArgInfo([ "__int64", "%s_mat.nativeObj" % a.name, "", [], "" ]) ) diff --git a/modules/java/src/cpp/converters.cpp b/modules/java/src/cpp/converters.cpp index 370b7b1..bc768d4 100644 --- a/modules/java/src/cpp/converters.cpp +++ b/modules/java/src/cpp/converters.cpp @@ -10,29 +10,20 @@ using namespace cv; +#define CHECK_MAT(cond) if(cond){ LOGD(#cond); return; } + + // vector_int void Mat_to_vector_int(Mat& mat, vector& v_int) { v_int.clear(); - - if(mat.type()!= CV_32SC1 || mat.rows!=1) - return; - - /* - for(int i=0; i(0, i) ); - */ + CHECK_MAT(mat.type()!= CV_32SC1 || mat.rows!=1); v_int = (vector) mat; } void vector_int_to_Mat(vector& v_int, Mat& mat) { - /* - mat.create(1, v_int.size(), CV_32SC1); - for(size_t i=0; i(0, i) = v_int[i]; - */ mat = Mat(v_int); } @@ -42,24 +33,12 @@ void vector_int_to_Mat(vector& v_int, Mat& mat) void Mat_to_vector_double(Mat& mat, vector& v_double) { v_double.clear(); - - if(mat.type()!= CV_64FC1 || mat.rows!=1) - return; - - /* - for(int i=0; i(0, i) ); - */ + CHECK_MAT(mat.type()!= CV_64FC1 || mat.rows!=1); v_double = (vector) mat; } void vector_double_to_Mat(vector& v_double, Mat& mat) { - /* - mat.create(1, v_double.size(), CV_64FC1); - for(size_t i=0; i(0, i) = v_double[i]; - */ mat = Mat(v_double); } @@ -69,24 +48,12 @@ void vector_double_to_Mat(vector& v_double, Mat& mat) void Mat_to_vector_float(Mat& mat, vector& v_float) { v_float.clear(); - - if(mat.type()!= CV_32FC1 || mat.rows!=1) - return; - - /* - for(int i=0; i(0, i) ); - */ + CHECK_MAT(mat.type()!= CV_32FC1 || mat.rows!=1); v_float = (vector) mat; } void vector_float_to_Mat(vector& v_float, Mat& mat) { - /* - mat.create(1, v_float.size(), CV_32FC1); - for(size_t i=0; i(0, i) = v_float[i]; - */ mat = Mat(v_float); } @@ -96,14 +63,7 @@ void vector_float_to_Mat(vector& v_float, Mat& mat) void Mat_to_vector_uchar(Mat& mat, vector& v_uchar) { v_uchar.clear(); - - if(mat.type()!= CV_8UC1 || mat.rows!=1) - return; - - /* - for(int i=0; i(0, i) ); - */ + CHECK_MAT(mat.type()!= CV_8UC1 || mat.rows!=1); v_uchar = (vector) mat; } @@ -113,24 +73,21 @@ void Mat_to_vector_uchar(Mat& mat, vector& v_uchar) void Mat_to_vector_Rect(Mat& mat, vector& v_rect) { v_rect.clear(); - - if(mat.type()!= CV_32SC4 || mat.rows!=1) { - LOGD("ERROR mat.type()!= CV_32SC4 || mat.rows!=1"); - return; - } - - for(int i=0; i) mat; + /*for(int i=0; i v=mat.at< Vec >(0, i); v_rect.push_back( Rect(v[0], v[1], v[2], v[3]) ); - } + }*/ } void vector_Rect_to_Mat(vector& v_rect, Mat& mat) { - mat.create(1, v_rect.size(), CV_32SC4); + mat = Mat(v_rect); + /*mat.create(1, v_rect.size(), CV_32SC4); for(size_t i=0; i >(0, i) = Vec(v_rect[i].x, v_rect[i].y, v_rect[i].width, v_rect[i].height); - } + }*/ } @@ -138,32 +95,35 @@ void vector_Rect_to_Mat(vector& v_rect, Mat& mat) void Mat_to_vector_Point(Mat& mat, vector& v_point) { v_point.clear(); - - if(mat.type()!= CV_32SC2 || mat.rows!=1) - return; - - for(int i=0; i >(0, i) ) ); + CHECK_MAT(mat.type()!= CV_32SC2 || mat.rows!=1); + v_point = (vector) mat; + /*for(int i=0; i >(0, i) ) );*/ } void vector_Point_to_Mat(vector& v_point, Mat& mat) { - mat.create(1, v_point.size(), CV_32SC2); + mat = Mat(v_point); + /*mat.create(1, v_point.size(), CV_32SC2); for(size_t i=0; i >(0, i) = Vec(v_point[i].x, v_point[i].y); + mat.at< Vec >(0, i) = Vec(v_point[i].x, v_point[i].y);*/ } //vector_KeyPoint void Mat_to_vector_KeyPoint(Mat& mat, vector& v_kp) { + v_kp.clear(); + //CHECK_MAT(mat.type()!= ??? || mat.rows!=1); + v_kp = (vector) mat; return; } void vector_KeyPoint_to_Mat(vector& v_kp, Mat& mat) { + mat = Mat(v_kp); return; } diff --git a/modules/java/src/java/features2d+KeyPoint.java b/modules/java/src/java/features2d+KeyPoint.java new file mode 100644 index 0000000..0b59812 --- /dev/null +++ b/modules/java/src/java/features2d+KeyPoint.java @@ -0,0 +1,61 @@ +package org.opencv.features2d; + +import org.opencv.core.Point; + +//javadoc: KeyPoint +public class KeyPoint { + + //javadoc: KeyPoint::pt + Point pt; + //javadoc: KeyPoint::size + float size; + //javadoc: KeyPoint::angle + float angle; + //javadoc: KeyPoint::response + float response; + //javadoc: KeyPoint::octave + int octave; + //javadoc: KeyPoint::class_id + int class_id; + + //javadoc: KeyPoint::KeyPoint(x, y, _size, _angle, _response, _octave, _class_id) + public KeyPoint(float x, float y, float _size, float _angle, float _response, int _octave, int _class_id) + { + pt = new Point(x, y); + size = _size; + angle = _angle; + response = _response; + octave = _octave; + class_id = _class_id; + } + + //javadoc: KeyPoint::KeyPoint() + public KeyPoint() + { + this(0, 0, 0, -1, 0, 0, -1); + } + + //javadoc: KeyPoint::KeyPoint(x, y, _size, _angle, _response, _octave) + public KeyPoint(float x, float y, float _size, float _angle, float _response, int _octave) + { + this(x, y, _size, _angle, _response, _octave, -1); + } + + //javadoc: KeyPoint::KeyPoint(x, y, _size, _angle, _response) + public KeyPoint(float x, float y, float _size, float _angle, float _response) + { + this(x, y, _size, _angle, _response, 0, -1); + } + + //javadoc: KeyPoint::KeyPoint(x, y, _size, _angle) + public KeyPoint(float x, float y, float _size, float _angle) + { + this(x, y, _size, _angle, 0, 0, -1); + } + + //javadoc: KeyPoint::KeyPoint(x, y, _size) + public KeyPoint(float x, float y, float _size) + { + this(x, y, _size, -1, 0, 0, -1); + } +}