python - 从超像素段获取box2d

标签 python opencv numpy scipy

我正在尝试使用 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 返回的每个超像素的边界框。

结果: enter image description here

代码:

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/

相关文章:

graph - 为Networkx和Graphviz中的特定节点着色

python - 在 3d numpy 数组中查找区域的中心坐标

python - 如何禁用 Django UserCreationForm 中用户名字段的自动对焦?

python - 如何在Windows机器上的python中使用tor和selenium-webdriver?

python - 将数字添加到嵌套列表中的整数

python - 将不同大小的numpy数组组合成一个更大的矩阵

c++ - CV::MAT 在 Debug模式下预览图像

python - 视频捕获不适用于所有支持的上限

python - 使用Opencv检测梯形和菱形时的公差问题

pandas - 如何计算numpy中一维数组的移动(或滚动,如果你愿意)百分位数/分位数?