Как использовать функцию scikit-image greycomatrix () в python? - PullRequest
1 голос
/ 23 апреля 2019

Я пытаюсь вычислить матрицы совпадений уровня серого из изображений для извлечения объектов.Я использую 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))

1 Ответ

0 голосов
/ 23 апреля 2019

Функция greycomatrix ожидает объект NumPy ndarray, а не объект PIL Image.Вам нужно конвертировать greyImg так:

import numpy as np

greyImg = np.asarray(img.convert('L', colors=8))
...