Open-CV 2.4 Android-Java:
我已经搜索了这样的轮廓(MatofPoint的列表):
Imgproc.findContours(roi_mat, contours, hierarchy, cfg.retMode, cfg.apxMode);
然后是凸包 (必须是MatofInt的列表)
for (int k=0; k < contours.size(); k++){ Imgproc.convexHull(contours.get(k), hull.get(k)); }
凸包需要MatofInt,而绘制轮廓需要MatofPoint。
提前谢谢
编辑 :@ OpenCV4Android
for (int k=0; k < contours.size(); k++){ Imgproc.convexHull(contours.get(k), hullInt); for(int j=0; j < hullInt.toList().size(); j++){ hullPointList.add(contours.get(k).toList().get(hullInt.toList().get(j))); } hullPointMat.fromList(hullPointList); hullPoints.add(hullPointMat); } Imgproc.drawContours( mROI, hullPoints, -1, new Scalar(255,0,0, 255), 1);
看起来OpenCV Java API缺少另一个凸凸()签名:
convexHull(MatOfPoint points, MatOfPoint hull);
就像可以用C ++调用一样。
虽然我们还没有添加它,你需要创建的 船体 在 MatOfPoint 手动格式:
MatOfPoint::toArray()
MatOfPoint::toList()
MatOfInt::toArray()
MatOfInt::toList()
Point[]
List<Point>
MatOfPoint
MatOfPoint::fromArray()
MatOfPoint::fromList()
Core.drawContours()