//vector_KeyPoint\r
void Mat_to_vector_KeyPoint(Mat& mat, vector<KeyPoint>& v_kp)\r
{\r
- v_kp.clear();\r
- //CHECK_MAT(mat.type()!= ??? || mat.rows!=1);\r
- v_kp = (vector<KeyPoint>) mat;\r
+ v_kp.clear();\r
+ CHECK_MAT(mat.type()!= CV_64FC(7) || mat.rows!=1);\r
+ for(int i=0; i<mat.cols; i++)\r
+ {\r
+ Vec<double, 7> v = mat.at< Vec<double, 7> >(0, i);\r
+ KeyPoint kp((float)v[0], (float)v[1], (float)v[2], (float)v[3], (float)v[4], (int)v[5], (int)v[6]);\r
+ v_kp.push_back(kp);\r
+ }\r
return;\r
}\r
\r
\r
void vector_KeyPoint_to_Mat(vector<KeyPoint>& v_kp, Mat& mat)\r
{\r
- mat = Mat(v_kp);\r
- return;\r
+ int count = v_kp.size();\r
+ mat.create(1, count, CV_64FC(7));\r
+ for(int i=0; i<count; i++)\r
+ {\r
+ KeyPoint kp = v_kp[i];\r
+ mat.at< Vec<double, 7> >(0, i) = Vec<double, 7>(kp.pt.x, kp.pt.y, kp.size, kp.angle, kp.response, kp.octave, kp.class_id);\r
+ }\r
}\r
\r
\r
long long addr = (long long) new Mat(v_mat[i]);\r
mat.at< Vec<int, 2> >(0, i) = Vec<int, 2>(addr>>32, addr&0xffffffff);\r
}\r
- return;\r
}\r
import org.opencv.features2d.KeyPoint;\r
\r
public class Converters {\r
- \r
+\r
public static Mat vector_Point_to_Mat(List<Point> pts) {\r
Mat res;\r
int count = (pts!=null) ? pts.size() : 0;\r
int cols = m.cols();\r
if(CvType.CV_32SC2 != m.type() || m.rows()!=1 )\r
throw new java.lang.IllegalArgumentException();\r
- \r
+\r
pts.clear();\r
int[] buff = new int[2*cols];\r
m.get(0, 0, buff);\r
int cols = m.cols();\r
if(CvType.CV_32SC2 != m.type() || m.rows()!=1 )\r
throw new java.lang.IllegalArgumentException();\r
- \r
+\r
mats.clear();\r
int[] buff = new int[cols*2];\r
m.get(0, 0, buff);\r
}\r
}\r
\r
- public static void Mat_to_vector_KeyPoint(Mat kp_mat, List<KeyPoint> kps) {\r
- // TODO Auto-generated method stub\r
- }\r
-\r
public static Mat vector_float_to_Mat(List<Float> fs) {\r
Mat res;\r
int count = (fs!=null) ? fs.size() : 0;\r
int cols = m.cols();\r
if(CvType.CV_32FC1 != m.type() || m.rows()!=1 )\r
throw new java.lang.IllegalArgumentException();\r
- \r
+\r
fs.clear();\r
float[] buff = new float[cols];\r
m.get(0, 0, buff);\r
int cols = m.cols();\r
if(CvType.CV_32SC1 != m.type() || m.rows()!=1 )\r
throw new java.lang.IllegalArgumentException();\r
- \r
+\r
is.clear();\r
int[] buff = new int[cols];\r
m.get(0, 0, buff);\r
Mat res;\r
int count = (rs!=null) ? rs.size() : 0;\r
if(count>0){\r
- res = new Mat(1, count, CvType.CV_32SC4); //Point can be saved into double[2]\r
+ res = new Mat(1, count, CvType.CV_32SC4);\r
int[] buff = new int[4*count];\r
for(int i=0; i<count; i++) {\r
Rect r = rs.get(i);\r
int cols = m.cols();\r
if(CvType.CV_32SC4 != m.type() || m.rows()!=1 )\r
throw new java.lang.IllegalArgumentException();\r
- \r
+\r
rs.clear();\r
int[] buff = new int[4*cols];\r
m.get(0, 0, buff);\r
}\r
}\r
\r
+\r
+ public static Mat vector_KeyPoint_to_Mat(List<KeyPoint> kps) {\r
+ Mat res;\r
+ int count = (kps!=null) ? kps.size() : 0;\r
+ if(count>0){\r
+ res = new Mat(1, count, CvType.CV_64FC(7));\r
+ double[] buff = new double[count * 7];\r
+ for(int i=0; i<count; i++) {\r
+ KeyPoint kp = kps.get(i);\r
+ buff[7*i ] = kp.pt.x;\r
+ buff[7*i+1] = kp.pt.y;\r
+ buff[7*i+2] = kp.size;\r
+ buff[7*i+3] = kp.angle;\r
+ buff[7*i+4] = kp.response;\r
+ buff[7*i+5] = kp.octave;\r
+ buff[7*i+6] = kp.class_id;\r
+ }\r
+ res.put(0, 0, buff);\r
+ } else {\r
+ res = new Mat();\r
+ }\r
+ return res;\r
+ }\r
+\r
+ public static void Mat_to_vector_KeyPoint(Mat m, List<KeyPoint> kps) {\r
+ if(kps == null)\r
+ throw new java.lang.IllegalArgumentException();\r
+ int cols = m.cols();\r
+ if(CvType.CV_64FC(7) != m.type() || m.rows()!=1 )\r
+ throw new java.lang.IllegalArgumentException();\r
+\r
+ kps.clear();\r
+ double[] buff = new double[7*cols];\r
+ m.get(0, 0, buff);\r
+ for(int i=0; i<cols; i++) {\r
+ kps.add( new KeyPoint( (float)buff[4*i], (float)buff[4*i+1], (float)buff[4*i+2], (float)buff[4*i+3],\r
+ (float)buff[4*i+4], (int)buff[4*i+5], (int)buff[4*i+6] ) );\r
+ }\r
+ }\r
+\r
+\r
public static Mat vector_double_to_Mat(List<Double> ds) {\r
Mat res;\r
int count = (ds!=null) ? ds.size() : 0;\r
//javadoc: KeyPoint\r
public class KeyPoint {\r
\r
- //javadoc: KeyPoint::pt\r
- Point pt;\r
- //javadoc: KeyPoint::size\r
- float size;\r
- //javadoc: KeyPoint::angle\r
- float angle;\r
- //javadoc: KeyPoint::response\r
- float response;\r
- //javadoc: KeyPoint::octave\r
- int octave;\r
- //javadoc: KeyPoint::class_id\r
- int class_id; \r
+ //javadoc: KeyPoint::pt\r
+ public Point pt;\r
+ //javadoc: KeyPoint::size\r
+ public float size;\r
+ //javadoc: KeyPoint::angle\r
+ public float angle;\r
+ //javadoc: KeyPoint::response\r
+ public float response;\r
+ //javadoc: KeyPoint::octave\r
+ public int octave;\r
+ //javadoc: KeyPoint::class_id\r
+ public int class_id; \r
\r
//javadoc: KeyPoint::KeyPoint(x, y, _size, _angle, _response, _octave, _class_id)\r
public KeyPoint(float x, float y, float _size, float _angle, float _response, int _octave, int _class_id)\r