我正在使用skimage库来定义图形节点和边,它们将描述某些图像。在应用算法和绘制分割区域后,我意识到其中一个区域没有标记。我的目标是标记所有区域并找出每个区域的所有邻居,但我一直在尝试回答这个问题。如果有任何有用的信息,我将不胜感激。
import imageio
import numpy as np
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
from skimage.measure import regionprops
from skimage.segmentation import slic
from skimage.segmentation import mark_boundaries
def rgb2gray(rgb):
return np.dot(rgb[..., :3], [0.2126, 0.7152, 0.0722])
image = imageio.imread(img_file_path)
segments_slic = slic(image, n_segments=250, compactness=100)
regions = regionprops(segments_slic, intensity_image=rgb2gray(image))
for props in regions:
cy, cx = props.centroid
plt.plot(cx, cy, 'ro')
plt.imshow(mark_boundaries(image, segments_slic))
plt.show()发布于 2019-02-05 08:04:13
这是一个不幸的历史意外: SLIC返回从0开始的片段,但regionprops (和大多数其他函数)将0作为背景。要修复您的代码,请在SLIC的输出中添加1:
segments_slic = 1 + slic(image, n_segments=250, compactness=100)然后,您将获得预期的输出,并正确检测到左上角的片段(以前为0,现在为1):

https://stackoverflow.com/questions/54506079
复制相似问题