OpenCV3有很多很酷的东西。我使用connectedComponentsWithStats
访问统计数组进行了一些过滤,但有人可以告诉我如何访问每个标签的质心吗?
文档说这也是可能的,但我没有得到它。
Mat stats, centroids, labelImage;
int nLabels = connectedComponentsWithStats(input, labelImage, stats, centroids, connectivity);
答案 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)