OpenCV3 有很多很酷的东西。我使用 connectedComponentsWithStats
访问统计数据数组进行了一些过滤,但有人可以告诉我如何访问每个标签的质心吗?
文档说这也是可能的,但我不明白。
Mat stats, centroids, labelImage;
int nLabels = connectedComponentsWithStats(input, labelImage, stats, centroids, connectivity);
最佳答案
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)
关于c++ - OpenCV3 - 访问标签质心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34321567/