我正在尝试从图像中计算灰度共现矩阵以进行特征提取。我正在使用greycomatrix
来执行任务,但是由于出现以下错误,所以我似乎对该过程有些不了解:
ValueError:缓冲区源数组为只读
(完整的跟踪可以在下面找到)
所以这是我所做的:
使用8个量化级别将(PIL)图像转换为灰度:
greyImg = img.convert('L', colors=8)
然后计算glcm矩阵:
glcm = greycomatrix(greyImg, distances=[1], angles=[0, np.pi/4, np.pi/2],
symmetric=True, normed=True)
这导致了一个相当神秘的错误:
glcm = greycomatrix(img,距离= [1],角度= [0,np.pi / 4,np.pi / 2],等级= 256,对称= True,normed = True)
_glcm_loop(图像,距离,角度,水平,P)
skimage.feature._texture._glcm_loop中的文件“ skimage / feature / _texture.pyx”,第18行
View.MemoryView.memoryview_cwrapper中的文件“ stringsource”,行654
View.MemoryView.memoryview._cinit__中的文件“ stringsource”,行349
ValueError:缓冲区源数组为只读
我一直在尝试刺痛参数,但似乎无法弄清楚为什么会这样。计算glcm矩阵的正确方法是什么?
更新资料
问题出在灰度转换中。
需要进行以下更改:
import numpy as np
greyImg = np.array(img.convert('L', colors=8))
最佳答案
函数greycomatrix
需要NumPy ndarray
而不是PIL Image
对象。您需要像这样转换greyImg
:
import numpy as np
greyImg = np.asarray(img.convert('L', colors=8))
关于python - 如何在python中使用scikit-image greycomatrix()-函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55809188/