android java opencv 2.4 convexhull convexdefect

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()

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...