skimage KeyError: 'axis_major_length'
skimage KeyError: 'axis_major_length'
我想测量我的二值分割图像的属性。在区域旁边我想测量 axis_major_length
和 axis_minor_length
.
在创建我的 DataFrame 时抛出一个 KeyError。
这是代码:
label_image = measure.label(image > threshold, connectivity=image.ndim)
props = measure.regionprops_table(label_image, image, properties=['area', 'axis_major_length'])
df = pd.DataFrame(props)
这是错误:
KeyError Traceback (most recent call last)
<ipython-input-30-9c2383d91b51> in <module>()
42 label_image = measure.label(image > threshold, connectivity=image.ndim)
43 image_label_overlay = label2rgb(label_image, image=image)
---> 44 props = measure.regionprops_table(label_image, image, properties=['area', 'axis_major_length'])
45
46 df = pd.DataFrame(props)
1 frames
/usr/local/lib/python3.7/dist-packages/skimage/measure/_regionprops.py in _props_to_dict(regions, properties, separator)
500 n = len(regions)
501 for prop in properties:
--> 502 dtype = COL_DTYPES[prop]
503 column_buffer = np.zeros(n, dtype=dtype)
504 r = regions[0][prop]
KeyError: 'axis_major_length'
图像中应该只有一个被分割的元素,但是有另一个被分割成2像素区域的元素(print(df.area)
的输出):
0 2
1 2789
根据我的理解,这个错误发生在第一个元素(因为它太小而无法获得主长度?)。对于面积测量,我使用以下行过滤掉所有小于 25 像素的元素:df = df[df['area'] > 25]
但我只能在发生错误后执行此操作。
如何在测量这些属性时过滤掉小元素?
问题是您正在查看文档的开发版本,其中 major_axis_length
已重命名为 axis_major_length
。这将在 0.19 中改变。但是在最新的 released 版本的 scikit-image (0.18) 中,它仍然被称为 major_axis_length
,所以你应该使用:
https://scikit-image.org/docs/stable/api/skimage.measure.html#regionprops
注意 URL 中的“稳定”。不幸的是 Google 通常 returns 开发文档而不是稳定版本,但是如果您从 scikit-image.org 访问文档,它应该会带您到最新发布的版本。
另请注意,旧名称将继续有效,因此您应该使用它们而不必担心它们很快就会失效。
我想测量我的二值分割图像的属性。在区域旁边我想测量 axis_major_length
和 axis_minor_length
.
在创建我的 DataFrame 时抛出一个 KeyError。 这是代码:
label_image = measure.label(image > threshold, connectivity=image.ndim)
props = measure.regionprops_table(label_image, image, properties=['area', 'axis_major_length'])
df = pd.DataFrame(props)
这是错误:
KeyError Traceback (most recent call last)
<ipython-input-30-9c2383d91b51> in <module>()
42 label_image = measure.label(image > threshold, connectivity=image.ndim)
43 image_label_overlay = label2rgb(label_image, image=image)
---> 44 props = measure.regionprops_table(label_image, image, properties=['area', 'axis_major_length'])
45
46 df = pd.DataFrame(props)
1 frames
/usr/local/lib/python3.7/dist-packages/skimage/measure/_regionprops.py in _props_to_dict(regions, properties, separator)
500 n = len(regions)
501 for prop in properties:
--> 502 dtype = COL_DTYPES[prop]
503 column_buffer = np.zeros(n, dtype=dtype)
504 r = regions[0][prop]
KeyError: 'axis_major_length'
图像中应该只有一个被分割的元素,但是有另一个被分割成2像素区域的元素(print(df.area)
的输出):
0 2
1 2789
根据我的理解,这个错误发生在第一个元素(因为它太小而无法获得主长度?)。对于面积测量,我使用以下行过滤掉所有小于 25 像素的元素:df = df[df['area'] > 25]
但我只能在发生错误后执行此操作。
如何在测量这些属性时过滤掉小元素?
问题是您正在查看文档的开发版本,其中 major_axis_length
已重命名为 axis_major_length
。这将在 0.19 中改变。但是在最新的 released 版本的 scikit-image (0.18) 中,它仍然被称为 major_axis_length
,所以你应该使用:
https://scikit-image.org/docs/stable/api/skimage.measure.html#regionprops
注意 URL 中的“稳定”。不幸的是 Google 通常 returns 开发文档而不是稳定版本,但是如果您从 scikit-image.org 访问文档,它应该会带您到最新发布的版本。
另请注意,旧名称将继续有效,因此您应该使用它们而不必担心它们很快就会失效。