我正在尝试使用K-Means查找图像阵列中每个图像的主色。下面的示例使用python的sklearn.cluster导入中的KMeans。
例如,我有一个100x100像素的图像,我想在100x100图像中找到5x5块的主色。
我当前的实现(下)使用K-Means一次分析每个5x5块,这对于较大的图像尺寸来说非常慢。我想将图像数组输入到K-Means中,并让它返回主色数组,其中返回的数组中的每个索引都对应于images数组中的索引。
当前实施:
def get_dominant_color(image):
image = image.reshape((image.shape[0] * image.shape[1], 3))
clt = KMeans(n_clusters = 4)
labels = clt.fit_predict(image)
label_counts = Counter(labels)
dominant_color = clt.cluster_centers_[label_counts.most_common(1)[0][0]]
divisor = np.sum(dominant_color)
if divisor != 0:
# normalize the rgb values
dominant_color = dominant_color / np.sum(dominant_color)
return dominant_color
我尝试将其修改为调用clt.fit_predict(images)
,其中图像是5x5块的数组,但是我相信它将混合所有图像的所有颜色以产生单个输出。如果可能的话,我该如何操纵它来独立分析每个单独的图像?