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

    上一篇: android java opencv 2.4 convexhull convexdefect

    下一篇: JSON SerDe for Hive that supports JSON arrays