OpenCV C ++转换为Java以进行形状检测问题

我们对openCV Java开发有点新,并遇到了一个问题。

我们正在尝试将此代码转换为适用于Android的Java。

approxPolyDp需要一个MatOfPoint2f,其中我们有’approx’参数。 但是,当我们需要在ifContourConvex之后的if语句中使用这个相同的变量时,它需要一个MatOfPoint。 最初的原始代码是使用ArrayList大约。 我们对此非常困惑,需要在正确的方向上轻推,以了解我们应该做什么。

// Find contours java.util.ArrayList<java.util.ArrayList>(); List contours = new ArrayList(); Mat hierarchy = new Mat(); Imgproc.findContours(bw.clone(), contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE); // java.util.ArrayList approx = new java.util.ArrayList(); MatOfPoint2f approx = new MatOfPoint2f(); Mat dst = img.clone(); for (int i = 0; i < contours.size(); i++) { // Approximate contour with accuracy proportional // to the contour perimeter MatOfPoint2f contoursMat2 = new MatOfPoint2f( contours.get(i)); Imgproc.approxPolyDP(contoursMat2, approx, Imgproc.arcLength(contoursMat2, true) * 0.02, true); // Skip small or non-convex objects if (Math.abs(Imgproc.contourArea(contours.get(i))) < 100 || !Imgproc.isContourConvex(approx)) continue;