首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regionprops总是找到一个区域- python

Regionprops总是找到一个区域- python
EN

Stack Overflow用户
提问于 2020-05-01 18:49:22
回答 1查看 242关注 0票数 0

我有一个带有多个globs的图像,当我使用regionprops来查找每个globs的质心和BB时。但是,它始终只为所有这些参数找到1。更具体地说,我在左边的图像上得到了结果,但我想要右边的图像:regions_problem

我的代码:

代码语言:javascript
复制
            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()     

有人能告诉我我哪里做错了吗?

有趣的是,右边的图像也是我过去创作的。但是,我不能再这样做了。

EN

回答 1

Stack Overflow用户

发布于 2020-05-04 19:33:44

您的功能很可能具有相同的标签值。regionprops要求您的功能是独立标记的,即。1, 2, 3, ...。下面是一个示例:

在这种情况下,两个要素都具有标签值1,因此它们就像是一个对象一样进行测量:

代码语言:javascript
复制
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

代码语言:javascript
复制
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')

这会给你你想要的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61541026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档