android java opencv 2.4凸凹凸起
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,但drawcontours想要一个MatofPoint。那么该怎么做?
Thx提前..
编辑 :@ 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缺少另一个凸的Hull()签名:
convexHull(MatOfPoint points, MatOfPoint hull);
就像可以用C ++调用一样。
虽然我们没有添加它,但您需要手动创建MatOfPoint格式的船体 :
MatOfPoint::toArray()
或MatOfPoint::toList()
来获得轮廓点 MatOfInt::toArray()
或MatOfInt::toList()
获取它们的船体索引 Point[]
或List<Point>
MatOfPoint::fromArray()
或MatOfPoint::fromList()
将其转换为MatOfPoint
Core.drawContours()
在为轮廓添加列表点之前,我们需要清除hullPointList
hullPointList .clear();
for(int j=0; j < hullInt.toList().size(); j++){
hullPointList.add(contours.get(k).toList().get(hullInt.toList().get(j)));
}
链接地址: http://www.djcxy.com/p/60333.html