np.reshape (): преобразование изображения в массив объектов на основе интенсивностей RGB - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь сегментировать цветное изображение, используя алгоритм Mean-Shift, используя sklearn.У меня есть следующий код:

import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.datasets.samples_generator import make_blobs
import matplotlib.pyplot as plt
from itertools import cycle
from PIL import Image

image = Image.open('sample_images/fruit_half.png')
image = np.array(image)

#need to convert image into feature array based on rgb intensities
flat_image = np.reshape(image, [-1,3])

Я пытаюсь преобразовать изображение в массив объектов на основе интенсивностей RGB, чтобы я мог выполнить кластеризацию.Тем не менее, я получаю следующую ошибку:

ValueError: cannot reshape array of size 3979976 into shape (3)

Я не уверен, почему я получаю эту ошибку и как я могу ее решить.Любые идеи приветствуются.

1 Ответ

0 голосов
/ 11 июля 2019

Это потому, что изображение, которое вы загружаете, не имеет значений RGB (если вы посмотрите на размеры, последнее - 4.

Сначала вам нужно преобразовать его в RGB следующим образом:

image = Image.open('sample_images/fruit_half.png').convert('RGB')
image = np.array(image)

# Now it works
flat_image = np.reshape(image, [-1,3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...