假设你有一张图片以 numpy.array
的形式:
vals=numpy.array([[3,24,25,6,2],[8,7,6,3,2],[1,4,23,23,1],[45,4,6,7,8],[17,11,2,86,84]])
假设您想计算每个对象内有多少个单元格,给定阈值为17(例如):
from scipy import ndimage
from skimage.measure import regionprops
blobs = numpy.where(vals>17, 1, 0)
labels, no_objects = ndimage.label(blobs)
props = regionprops(blobs)
如果你进行检查,这将得到一个具有4个明显目标的图像,这些目标都超过了阈值。
In[1]: blobs
Out[1]:
array([[0, 1, 1, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 1, 1, 0],
[1, 0, 0, 0, 0],
[0, 0, 0, 1, 1]])
事实上:
In[2]: no_objects
Out[2]: 4
我希望计算每个对象的单元格数(或面积)。预期结果是一个字典,格式为对象ID:单元格数
:
size={0:2,1:2,2:1,3:2}
My attempt:
size={}
for label in props:
size[label]=props[label].area
返回一个错误:
Traceback (most recent call last):
File "<ipython-input-76-e7744547aa17>", line 3, in <module>
size[label]=props[label].area
TypeError: list indices must be integers, not _RegionProperties
我知道我错误地使用了label
,但目的是迭代对象。该怎么做呢?