2014-03-05 38 views
0

我是OpenCV的新手,並且使用OpenCV的Java包裝器。在我的應用程序中,我正在檢測輪廓,然後在它周圍製作凸面。 Imgproc.convexHell(matofpoint,matofint);以MatOfInt形式向我提供船體值。將MatOfInt轉換爲MatofPoint

現在我想打印matofint在我的形象,但Imgproc。 drawContour()需要MatOfPoint。

所以我的問題是如何轉換MatOfInt到MatOfPoint的

+1

可能重複[凸包上的Java的Android 2.3 opencv的(http://stackoverflow.com/questions/17586948/convex-hull-on -java-android-opencv-2-3) – Aurelius

+0

看看[this]的第二部分(http://stackoverflow.com/a/17618897/1601291)的答案。它應該解釋你的問題。 – Aurelius

+0

嘗試了一切,但都沒有工作! :o –

回答

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