【发布时间】:2015-12-27 15:47:12
【问题描述】:
背景:
我使用gSLICr 计算了图像的 SLIC 超像素,它给出了图像超像素的“每像素图”作为索引(0 到超像素的数量-1)。
此映射是指向包含索引的整数 const 数组 (const int*) 的指针。
我现在想使用 OpenCV 计算每个超像素的质心。
来自 Matlab 背景,我会使用regionprops:
segments = vl_slic(myImage, regionSize, regularizer);
stats = regionprops(segments, 'Centroid');
centroids = cat(1, stats.Centroid);
我不知道这是如何使用 OpenCV 完成的。
问题:
(i) 如何将 const int* 数组转换为 cv::Mat?
(ii) 如何从 (i) 中的矩阵计算超像素质心?
【问题讨论】:
-
看看this。应该回答你的第一个问题
-
cv::Mat supercell = ppixelMap == spIndex;将为您提供包含该单个超像素的所有像素的蒙版。
-
你的第二个问题:一旦你有了标签的图像,你可以使用connectedComponentsWithStats 来获取质心(你在 OpenCV 3.0 上使用,对吧?)。
标签: c++ opencv centroid superpixels