如何从extcolor仅获取RGB值

2024-09-28 20:58:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用extcolor库获取给定图像中的颜色。返回的是元组列表或元组列表。这是列表中5个输入图像的输出

color_list = [
     [((0, 113, 197), 25727)],
     [((4, 7, 7), 17739)],
     [((66, 133, 244), 6567), ((234, 67, 53), 4112), ((251, 188, 5), 2045), ((52, 168, 83), 1232), ((0, 255, 255), 32), ((255, 128, 0), 14), ((255, 255, 0), 9)],
     [((209, 54, 57), 39025), ((255, 255, 255), 10311), ((226, 130, 132), 204), ((0, 0, 0), 32)]
 ]

(a, b, c)是我感兴趣的RGB值。我如何只提取那些?第一个图像只有一个RGB输出,而第三个图像有五个RGB输出

这是我的代码,它只返回每个图像中的颜色值:

for logo in games:
    rand1, rand2, rand3 = (random.randint(0, 255),
                           random.randint(0, 255),
                           random.randint(0, 255))

    png = Image.open(logo).convert('RGBA')
    colors = extcolors.extract_from_path(logo)

    background = Image.new('RGBA', png.size, (rand1, rand2, rand3))

    alpha_composite = Image.alpha_composite(background, png)
    print(colors)

Tags: 图像image列表png颜色randomrgblogo
1条回答
网友
1楼 · 发布于 2024-09-28 20:58:15

在所有示例中,我只看到list of tuples,因此您可以对示例使用相同的简单for-loop来提取数据

color_list = [
     [((0, 113, 197), 25727)],
     [((4, 7, 7), 17739)],
     [((66, 133, 244), 6567), ((234, 67, 53), 4112), ((251, 188, 5), 2045), ((52, 168, 83), 1232), ((0, 255, 255), 32), ((255, 128, 0), 14), ((255, 255, 0), 9)],
     [((209, 54, 57), 39025), ((255, 255, 255), 10311), ((226, 130, 132), 204), ((0, 0, 0), 32)]
]

print(' - version 1  -')

for example in color_list:
    result = []
    for item in example:
        result.append(item[0])
    print(result)

结果

[(0, 113, 197)]
[(4, 7, 7)]
[(66, 133, 244), (234, 67, 53), (251, 188, 5), (52, 168, 83), (0, 255, 255), (255, 128, 0), (255, 255, 0)]
[(209, 54, 57), (255, 255, 255), (226, 130, 132), (0, 0, 0)]

您也可以将其编写为函数

print(' - version 2  -')
    
def extract(data):
    result = []
    for item in data:
        result.append(item[0])
    return result

for example in color_list:
    result = extract(example)
    print(result)

或者简称为列表理解

print(' - version 3  -')
        
for example in color_list:
    result = [item[0] for item in example]
    print(result)

编辑:

单个图像的示例

import extcolors

colors, pixels = extcolors.extract_from_path('lenna.png')

rgb_list = [x[0] for x in colors]

print(rgb_list)

相关问题 更多 >