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,255),1);
解决方法
看起来OpenCV Java API缺少另一个convexHull()签名:
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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。