OpenCV3 - 访问标签质心

时间:2015-12-16 20:32:08

标签: c++ opencv

OpenCV3有很多很酷的东西。我使用connectedComponentsWithStats访问统计数组进行了一些过滤,但有人可以告诉我如何访问每个标签的质心吗?

文档说这也是可能的,但我没有得到它。

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

1 个答案:

答案 0 :(得分:2)

centroids是一个double的矩阵,有两列(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));
}

如果您将centroids声明为Mat,请将其设为:centroids.at<double>(i,0)