我对OpenCV相当陌生,并且正在使用OpenCV的Java包装器。在我的应用程序中,我正在检测轮廓,然后在其周围制作凸面壳。 Imgproc.convexHell(matofpoint,matofint);为我提供MatOfInt形式的船体值。

现在我想在图像中打印matofint,但是要打印Imgproc。 drawContour()需要MatOfPoint。

所以我的问题是如何将MatOfInt转换为MatOfPoint

最佳答案

public static MatOfPoint convertIndexesToPoints(MatOfPoint contour, MatOfInt indexes) {
    int[] arrIndex = indexes.toArray();
    Point[] arrContour = contour.toArray();
    Point[] arrPoints = new Point[arrIndex.length];

    for (int i=0;i<arrIndex.length;i++) {
        arrPoints[i] = arrContour[arrIndex[i]];
    }

    MatOfPoint hull = new MatOfPoint();
    hull.fromArray(arrPoints);
    return hull;
}

10-06 02:21