使用颜色图从图像中提取所有颜色

时间:2021-04-16 08:42:13

标签: python

我愿意使用颜色图在 python 中获取图像中存在的所有颜色。在文档中,他们没有具体说明这一点。这是我的代码:

import colorgram as cg

color_list = cg.extract("dot-img.jpg", 60)
color_palette = []

for count in range(len(color_list)):
    rgb = color_list[count]
    color = rgb.rgb
    color_palette.append(color)

我在 cg.extract 第二个参数中写了 60。但我没有得到 60 种颜色。这是否意味着色图返回了图像中存在的所有颜色?

1 个答案:

答案 0 :(得分:1)

只要给 number_of_colors 变量一个尽可能大的数字。系统会妥善处理。

import colorgram as cg

color_list = cg.extract("dot-img.jpg", 2 ** 32)
color_palette = []

for count in range(len(color_list)):
    rgb = color_list[count]
    color = rgb.rgb
    color_palette.append(color)

colorgram 中的源代码:

def get_colors(samples, used, number_of_colors):
    pixels = 0
    colors = []
    number_of_colors = min(number_of_colors, len(used))

    for count, index in used[:number_of_colors]:
        pixels += count

        color = Color(
            samples[index]     // count,
            samples[index + 1] // count,
            samples[index + 2] // count,
            count
        )

        colors.append(color)
    for color in colors:
        color.proportion /= pixels
    return colors