2015-12-16 53 views
2

OpenCV3有很多很酷的東西。我使用connectedComponentsWithStats訪問統計數據做了一些過濾,但任何人都可以告訴我如何訪問每個標籤的質心?OpenCV3 - 訪問標籤質心

文檔說,這是可能的,但我沒有得到它。

Mat stats, centroids, labelImage; 
int nLabels = connectedComponentsWithStats(input, labelImage, stats, centroids, connectivity); 

回答

2

centroids是雙具有兩列(X,Y)和行的矩陣等於標籤的數量。

您可以訪問它想:

Mat1i labels; 
Mat1i stats; 
Mat1d centroids; 
int n_labels = connectedComponentsWithStats(img, labels, stats, centroids); 

for (int i = 0; i < centroids.rows; ++i) 
{ 
    cout << "x: " << centroids(i, 0) << " y: " << centroids(i, 1) << endl; 
    circle(outputImage, Point(centroids(i, 0), centroids(i, 1)), 3, Scalar(0,255,0)); 
} 

如果聲明centroidsMat,訪問它想:centroids.at<double>(i,0)

+0

雙打,喔確定。所以,因爲imwrite僅限於其他類型,所以這是我無法創建imfile的原因。 THKS。 –