我正在尝试使用 SLIC 来获取超像素并获得图像的语义分割。
img = cv2.imread(img_name)
segments = slic(image, n_segments = numSegments, sigma = 3,convert2lab=True,max_iter=25)
如何获取每个段的 box2d?如果存在分段的分层树,我如何获取它?
最佳答案
我没有看原论文,但是根据documentation它不返回层次结构。
我假设你指的是边界框,所以使用了 skimage example Regionprops 来获取 SLIC 返回的每个超像素的边界框。
代码:
from skimage.segmentation import slic
from skimage.data import astronaut
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from skimage.measure import label
from skimage.measure import regionprops
from skimage.color import label2rgb
img = astronaut()
segments = slic(img, n_segments=50, compactness = 100)
image_label_overlay = label2rgb(segments, image=img)
fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6))
ax.imshow(image_label_overlay)
for region in regionprops(segments):
minr, minc, maxr, maxc = region.bbox
rect = mpatches.Rectangle((minc, minr), maxc - minc, maxr - minr,
fill=False, edgecolor='red', linewidth=2)
ax.add_patch(rect)
plt.show()
关于python - 从超像素段获取box2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40225098/