Contexte:OpenCV: calcul des centroïdes de superpixel
je l'ai calculé SLIC superpixels d'une image en utilisant gSLICr, ce qui donne une "carte par pixel" de superpixels d'image sous forme d'indices (0 au nombre de superpixels-1).
Cette carte est un pointeur vers un tableau const entier (const int*
) contenant les indices.
Je veux maintenant calculer les centroïdes de chaque superpixel en utilisant OpenCV.
Issu d'un milieu Matlab, je ferais cela en utilisant regionprops
:
segments = vl_slic(myImage, regionSize, regularizer);
stats = regionprops(segments, 'Centroid');
centroids = cat(1, stats.Centroid);
Je ne sais pas comment cela se fait en utilisant OpenCV.
Questions:
(i) Comment puis-je convertir un tableau const int*
à un cv::Mat
? (Ii) Comment calculer les centroïdes du superpixel à partir de la matrice dans (i)?
Jetez un coup d'œil à [this] (http://stackoverflow.com/a/32844661/5008845). Devrait répondre à votre première question – Miki
cv :: Mat supercell = ppixelMap == spIndex; vous donnera un masque avec tous les pixels de ce superpixel unique. – Micka
Votre deuxième question: une fois que vous avez l'image des étiquettes, vous pouvez utiliser [connectedComponentsWithStats] (http://docs.opencv.org/master/d3/dc0/group__imgproc__shape.html#gae57b028a2b2ca327227c2399a9d53241&gsc.tab=0) pour obtenir des centroïdes (vous utilisez sur OpenCV 3.0, n'est-ce pas?). – Miki