我有一个带有多个globs的图像,当我使用regionprops来查找每个globs的质心和BB时。但是,它始终只为所有这些参数找到1。更具体地说,我在左边的图像上得到了结果,但我想要右边的图像:regions_problem
我的代码:
regions = regionprops(itk_label)
fig, ax = plt.subplots()
ax.imshow(itk_label, cmap=plt.cm.gray)
i=0
for props in regions:
i=i+1
print(str(i))
y0, x0 = props.centroid
ax.plot(x0, y0, '.r', markersize=5)
minr, minc, maxr, maxc = props.bbox
bx = (minc, maxc, maxc, minc, minc)
by = (minr, minr, maxr, maxr, minr)
ax.plot(bx, by, '-b', linewidth=1.0)
ax.axis((0, 600, 600, 0))
plt.show() 有人能告诉我我哪里做错了吗?
有趣的是,右边的图像也是我过去创作的。但是,我不能再这样做了。
发布于 2020-05-04 19:33:44
您的功能很可能具有相同的标签值。regionprops要求您的功能是独立标记的,即。1, 2, 3, ...。下面是一个示例:
在这种情况下,两个要素都具有标签值1,因此它们就像是一个对象一样进行测量:
import numpy as np
from skimage import measure
from matplotlib import pyplot as plt
im = np.zeros((600, 600), dtype=int)
im[350:400, 350:400] = 1
im[510:530, 200:240] = 1
np.unique(im)
>>> array([0, 1])
plt.matshow(im)
regions = measure.regionprops(im)
for r in regions:
plt.plot(*r.centroid[::-1], marker='x', color='r')

如果您使用measure.label函数,您可以独立地标记分离的要素,即。标签值1, 2
plt.matshow(im)
labelled = measure.label(im)
np.unique(labelled)
>>> array([0, 1, 2])
regions = measure.regionprops(labelled)
for r in regions:
plt.plot(*r.centroid[::-1], marker='x', color='r')这会给你你想要的结果。

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