public String keypointsToJSON(MatOfKeyPoint kps){ Gson gson = new Gson(); JsonArray jsonArr = new JsonArray(); KeyPoint[] kpsArray = kps.toArray(); for(KeyPoint kp : kpsArray){ JsonObject obj = new JsonObject(); obj.addProperty("class_id", kp.class_id); obj.addProperty("x", kp.pt.x); obj.addProperty("y", kp.pt.y); obj.addProperty("size", kp.size); obj.addProperty("angle", kp.angle); obj.addProperty("octave", kp.octave); obj.addProperty("response", kp.response); jsonArr.add(obj); } return gson.toJson(jsonArr); }
public static void Mat_to_vector_KeyPoint(Mat m, List<KeyPoint> kps) { if (kps == null) throw new java.lang.IllegalArgumentException("Output List can't be null"); int count = m.rows(); if (CvType.CV_64FC(7) != m.type() || m.cols() != 1) throw new java.lang.IllegalArgumentException( "CvType.CV_64FC(7) != m.type() || m.cols()!=1\n" + m); kps.clear(); double[] buff = new double[7 * count]; m.get(0, 0, buff); for (int i = 0; i < count; i++) { kps.add(new KeyPoint((float) buff[7 * i], (float) buff[7 * i + 1], (float) buff[7 * i + 2], (float) buff[7 * i + 3], (float) buff[7 * i + 4], (int) buff[7 * i + 5], (int) buff[7 * i + 6])); } }
public void fromArray(KeyPoint...a) { if(a==null || a.length==0) return; int num = a.length; alloc(num); float buff[] = new float[num * _channels]; for(int i=0; i<num; i++) { KeyPoint kp = a[i]; buff[_channels*i+0] = (float) kp.pt.x; buff[_channels*i+1] = (float) kp.pt.y; buff[_channels*i+2] = kp.size; buff[_channels*i+3] = kp.angle; buff[_channels*i+4] = kp.response; buff[_channels*i+5] = kp.octave; buff[_channels*i+6] = kp.class_id; } put(0, 0, buff); //TODO: check ret val! }
public KeyPoint[] toArray() { int num = (int) total(); KeyPoint[] a = new KeyPoint[num]; if(num == 0) return a; float buff[] = new float[num * _channels]; get(0, 0, buff); //TODO: check ret val! for(int i=0; i<num; i++) a[i] = new KeyPoint( buff[_channels*i+0], buff[_channels*i+1], buff[_channels*i+2], buff[_channels*i+3], buff[_channels*i+4], (int) buff[_channels*i+5], (int) buff[_channels*i+6] ); return a; }