java - android java opencv 2.4 convexhull 凸缺陷

标签 java android opencv convex-hull

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));
}

convexhull 需要一个 MatofInt,但 drawcontours 需要一个 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() 签名:

convexHull(MatOfPoint points, MatOfPoint hull);

好像可以用 C++ 调用。

虽然我们还没有添加它,但您需要手动创建 MatOfPoint 格式的hull:

  • 使用MatOfPoint::toArray()MatOfPoint::toList()得到轮廓点
  • 使用MatOfInt::toArray()MatOfInt::toList()获取他们的船体索引
  • 创建一个新的 Point[]List<Point>只有船体点
  • 将其转换为 MatOfPoint通过MatOfPoint::fromArray()MatOfPoint::fromList()
  • 调用Core.drawContours()

关于java - android java opencv 2.4 convexhull 凸缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961660/

相关文章:

java - 贪心算法Java/firstFit方法

java - 将多值字段添加到 SolrInputDocument

android - 在 VS Xamarin 中导出 Apk 失败

java - 即使在网页加载完成后,webview 中的进度条也会继续加载

c++ - OpenCV Traincascade 返回垃圾

java - 扩展一个扩展另一个抽象类的抽象类时的构造函数问题

java - 在 DynamoDB 中自动填充 Epoch 格式的时间

java - 如何使用原生android像选框一样连续改变布局背景

python - 如何使用 opencv reduce 使用 cv2 python API

python - img [y:y + h,x:x + w]坐标系的工作方式