Я пытаюсь вычислить матрицы совпадений уровня серого из изображений для извлечения объектов.Я использую 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 = серая матрица (img, расстояния = [1], углы = [0, np.pi / 4, np.pi / 2], уровни = 256, симметричный = True, нормированный = 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))