如何在python中找到每个SLIC superpixel的质心?

时间:2018-04-23 11:24:29

标签: python opencv image-processing image-segmentation scikit-image

新手在这里! 我正在使用python plus opencv和skimage包。我使用以下方法对超像素中的图像进行了分割:

segments = slic(image, n_segments=numSegments, sigma=1, convert2lab=True)

现在我想获得与每个超像素的质心相关的坐标,我该怎么做?

2 个答案:

答案 0 :(得分:2)

尝试查看skimage.measure.regionprops

from skimage.measure import regionprops

regions = regionprops(segments)
for props in regions:
    cx, cy = props.centroid  # centroid coordinates

答案 1 :(得分:0)

您可以通过按以下方式按类平均每个坐标来轻松完成:

import numpy as np
import cv2

slic = cv2.ximgproc.createSuperpixelSLIC(image, n_segments=numSegments, sigma=1, convert2lab=True))

num_slic = slic.getNumberOfSuperpixels()

for cls_lbl in range(num_slic):
    fst_cls = np.argwhere(lbls==cls_lbl)
    x, y = fst_cls[:, 0], fst_cls[:, 1]
    c = (x.mean(), y.mean())
    print(f'Class {cls_lbl} centroid coordinates: ({c[0]:.1f}, {c[1]:.1f})')

干杯