KMeans找出图像阵列中每个图像的主色

时间:2018-10-02 23:31:36

标签: python-3.x k-means image-recognition

我正在尝试使用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块的数组,但是我相信它将混合所有图像的所有颜色以产生单个输出。如果可能的话,我该如何操纵它来独立分析每个单独的图像?

0 个答案:

没有答案