OpenCV3-访问标签质心

OpenCV3 - Accessing label centroids

本文关键字:标签 访问 OpenCV3-      更新时间:2023-10-16

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

文件说这也是可能的,但我不明白。

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

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

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