np.reshape():根据rgb强度将图像转换为特征数组

np.reshape(): Converting an image into a feature array based on rgb intensities

我正在尝试使用 sklearn 使用 Mean-Shift 算法分割彩色图像。 我有以下代码:

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)

我不确定为什么会收到此错误以及如何解决此问题。任何见解表示赞赏。

因为你加载的图片没有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])