Log.d("size",Integer.toString(contours.size())); MatOfPoint temp_contour = contours.get(0); //the largest is at the index 0 for starting point MatOfPoint2f approxCurve = new MatOfPoint2f(); MatOfPoint largest_contour = contours.get(0); MatOfPoint2f approxCurve_temp = new MatOfPoint2f(); Imgproc.approxPolyDP(new_mat, approxCurve_temp, contourSize*0.05, true); if (approxCurve_temp.total() == 4) { maxArea = contourarea; maxAreaIdx = idx; getAbsolutePath() +"/scan/p/1.jpg"); double[] temp_double; temp_double = approxCurve.get(0,0); Point p1 = new Point(temp_double[0], temp_double[1]); temp_double = approxCurve.get(1,0); Point p2 = new Point(temp_double[0], temp_double[1]); temp_double = approxCurve.get(2,0); Point p3 = new Point(temp_double[0], temp_double[1]); temp_double = approxCurve.get(3,0); Point p4 = new Point(temp_double[0], temp_double[1]);
public MatOfPoint2f(Point...a) { super(); fromArray(a); }
protected MatOfPoint2f(long addr) { super(addr); if( !empty() && checkVector(_channels, _depth) < 0 ) throw new IllegalArgumentException("Incompatible Mat"); //FIXME: do we need release() here? }
public void fromArray(Point...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++) { Point p = a[i]; buff[_channels*i+0] = (float) p.x; buff[_channels*i+1] = (float) p.y; } put(0, 0, buff); //TODO: check ret val! }
public static MatOfPoint2f fromNativeAddr(long addr) { return new MatOfPoint2f(addr); }
public List<Point> toList() { Point[] ap = toArray(); return Arrays.asList(ap); } }
public us.ihmc.euclid.tuple2D.Point2D getCheckerBoardImageOrigin(RigidBodyTransform transform) { Point3 origin = new Point3(); Mat tvec = new Mat(3, 1, CvType.CV_32F); Mat rvec = new Mat(3, 1, CvType.CV_32F); rigidBodyTransformToOpenCVTR(transform, tvec, rvec); MatOfPoint2f imagePoints = new MatOfPoint2f(); Calib3d.projectPoints(new MatOfPoint3f(origin), rvec, tvec, cameraMatrix, distCoeffs, imagePoints); return new us.ihmc.euclid.tuple2D.Point2D(imagePoints.get(0, 0)); }
Mat result = getPerspectiveTransformation(scene_corners,W,H);//assuming you also have H somewhere Mat getPerspectiveTransformation(Point[] points, int w, int h) { Point[] canonicalPoints = new Point[4]; canonicalPoints[0] = new Point(w, 0); canonicalPoints[1] = new Point(0, 0); canonicalPoints[2] = new Point(0, h); canonicalPoints[3] = new Point(w, h); MatOfPoint2f canonicalMarker = new MatOfPoint2f(); canonicalMarker.fromArray(canonicalPoints); MatOfPoint2f marker = new MatOfPoint2f(points); return Imgproc.getPerspectiveTransform(marker, canonicalMarker); }
public FluentCv getContourRects(List<MatOfPoint> contours, List<RotatedRect> rects) { for (int i = 0; i < contours.size(); i++) { MatOfPoint2f contour_ = new MatOfPoint2f(); contours.get(i).convertTo(contour_, CvType.CV_32FC2); if (contour_.empty()) { continue; } RotatedRect rect = Imgproc.minAreaRect(contour_); rects.add(rect); } return this; }
public void fromArray(Point...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++) { Point p = a[i]; buff[_channels*i+0] = (float) p.x; buff[_channels*i+1] = (float) p.y; } put(0, 0, buff); //TODO: check ret val! }
MatOfPoint src; // initialize src MatOfPoint2f dst = new MatOfPoint2f(); src.convertTo(dst, CvType.CV_32F);
public List<Point> toList() { Point[] ap = toArray(); return Arrays.asList(ap); } }
public javax.vecmath.Point2d getCheckerBoardImageOrigin(RigidBodyTransform transform) { Point3 origin = new Point3(); Mat tvec = new Mat(3, 1, CvType.CV_32F); Mat rvec = new Mat(3, 1, CvType.CV_32F); rigidBodyTransformToOpenCVTR(transform, tvec, rvec); MatOfPoint2f imagePoints = new MatOfPoint2f(); Calib3d.projectPoints(new MatOfPoint3f(origin), rvec, tvec, cameraMatrix, distCoeffs, imagePoints); return new javax.vecmath.Point2d(imagePoints.get(0, 0)); }
protected MatOfPoint2f(long addr) { super(addr); if( !empty() && checkVector(_channels, _depth) < 0 ) throw new IllegalArgumentException("Incompatible Mat"); //FIXME: do we need release() here? }
public void fromArray(Point...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++) { Point p = a[i]; buff[_channels*i+0] = (float) p.x; buff[_channels*i+1] = (float) p.y; } put(0, 0, buff); //TODO: check ret val! }
public static void Mat_to_vector_vector_Point2f(Mat m, List<MatOfPoint2f> pts) { if (pts == null) throw new java.lang.IllegalArgumentException("Output List can't be null"); if (m == null) throw new java.lang.IllegalArgumentException("Input Mat can't be null"); List<Mat> mats = new ArrayList<Mat>(m.rows()); Mat_to_vector_Mat(m, mats); for (Mat mi : mats) { MatOfPoint2f pt = new MatOfPoint2f(mi); pts.add(pt); } }
public List<Point> toList() { Point[] ap = toArray(); return Arrays.asList(ap); } }