我正在使用skimage.feature.greycomatrix来计算图像的GLCM(灰度共生矩阵),但是当我使用时:
from skimage.feature import greycomatrix
在python 3.6.4
shell中-它起作用。 See image
但是当我在Sublime Text 3中使用它时, 它将报告错误:
Traceback (most recent call last):
File "C:\Users\Martin Ma\Desktop\every day python\test\GLCM\main.py", line 80, in <module>
from skimage.feature import greycomatrix
File "E:\python\lib\site-packages\skimage\feature\__init__.py", line 9, in <module>
from .peak import peak_local_max
File "E:\python\lib\site-packages\skimage\feature\peak.py", line 3, in <module>
from ..segmentation import relabel_sequential
File "E:\python\lib\site-packages\skimage\segmentation\__init__.py", line 1, in <module>
from .random_walker_segmentation import random_walker
File "E:\python\lib\site-packages\skimage\segmentation\random_walker_segmentation.py", line 43, in <module>
from ..filters import rank_order
File "E:\python\lib\site-packages\skimage\filters\__init__.py", line 3, in <module>
from .edges import (sobel, sobel_h, sobel_v,
File "E:\python\lib\site-packages\skimage\filters\edges.py", line 17, in <module>
from ..restoration.uft import laplacian
File "E:\python\lib\site-packages\skimage\restoration\__init__.py", line 12, in <module>
from .inpaint import inpaint_biharmonic
File "E:\python\lib\site-packages\skimage\restoration\inpaint.py", line 9, in <module>
from ..measure import label
File "E:\python\lib\site-packages\skimage\measure\__init__.py", line 6, in <module>
from ._regionprops import regionprops, perimeter
File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 645, in <module>
_install_properties_docs()
File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 632, in _install_properties_docs
prop_doc = _parse_docs()
File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 625, in _parse_docs
doc, flags=re.DOTALL)
File "E:\python\lib\re.py", line 229, in finditer
return _compile(pattern, flags).finditer(string)
TypeError: expected string or bytes-like object
(See picture of Sublime Text error)
有人可以告诉我为什么会发生这种情况以及如何解决吗?
我的代码:
from skimage.feature import greycomatrix
import numpy as np
image=np.array([[1,1,5,6,8],
[0,0,5,7,1],
[4,0,0,1,2],
[8,5,1,2,5]],dtype=np.uint8)
#levels=256 image this test is 9
result=greycomatrix(image,[1],[0,np.pi/4,np.pi/2,3*np.pi/4],levels=9)
print(result[:, :, 0, 0])
答案 0 :(得分:4)
您正在运行带有-OO
标志的Python,该标志会丢弃文档字符串,而将其替换为None
。 skimage.measure._regionprops
includes code,它在初始化期间解析一个函数的文档字符串,以设置其他函数的文档字符串。当文档字符串已被丢弃时,此操作将失败。在没有-OO
标志的情况下运行Python可以避免此问题。
看来scikit-image代码库的其他部分可能已经遇到并解决了类似的问题;我看到一些已经检查过将文档字符串设置为None
的地方,例如skimage.io
中。为了使skimage.measure._regionprops
与-OO
兼容,必须向该模块添加对None
文档字符串的类似检查。 _install_properties_docs
不仅可以处理文档字符串,因此,如果我们没有文档字符串,我们就不能跳过整个过程。