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

时间:2019-07-11 01:49:53

标签: python numpy scikit-learn computer-vision 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 :(得分:0)

这是因为正在加载的图像没有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])