【发布时间】:2019-09-12 12:27:47
【问题描述】:
我正在尝试从图像中计算灰度共现矩阵以进行特征提取。我正在使用greycomatrix 来完成任务,但我似乎对这个过程有些不理解,因为我收到了以下错误:
ValueError: 缓冲区源数组是只读的
(完整的跟踪可以在下面找到)
这就是我所做的:
将 (PIL) 图像转换为具有 8 个量化级别的灰度:
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 = graycomatrix(img, distances=[1], Angles=[0, np.pi/4, np.pi/2], levels=256, symmetric=True, normed=True)
_glcm_loop(图像,距离,角度,水平,P)
文件“skimage/feature/_texture.pyx”,第 18 行,在 skimage.feature._texture._glcm_loop 中
文件“stringsource”,第 654 行,在 View.MemoryView.memoryview_cwrapper 中
文件“stringsource”,第 349 行,在 View.MemoryView.memoryview._cinit__ 中 ValueError: 缓冲区源数组是只读的
我一直在尝试对参数感到刺痛,但我似乎无法弄清楚为什么会发生这种情况。计算 glcm 矩阵的正确方法是什么?
更新
问题在于灰度转换。 需要进行以下更改:
import numpy as np
greyImg = np.array(img.convert('L', colors=8))
【问题讨论】:
标签: python numpy python-imaging-library scikit-image glcm