Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将颜色强度值映射到其名称?_Python_Image Processing - Fatal编程技术网

Python 如何将颜色强度值映射到其名称?

Python 如何将颜色强度值映射到其名称?,python,image-processing,Python,Image Processing,我有一个主色调和一个从图像中提取的调色板。我想映射这些强度值并打印主色的名称和所有颜色 来自调色板的颜色。我可以很容易地使用颜色提取这些强度值。但是如何用名字来映射它们呢?这就是我到目前为止所做的: 我还准备了一个列表变量中的颜色强度值。这些是价值观: 您可以与一起使用以获取图像的颜色统计信息: import webcolors from PIL import Image from collections import Counter def get_colour_name(requeste

我有一个主色调和一个从图像中提取的调色板。我想映射这些强度值并打印主色的名称和所有颜色 来自调色板的颜色。我可以很容易地使用颜色提取这些强度值。但是如何用名字来映射它们呢?这就是我到目前为止所做的:

我还准备了一个列表变量中的颜色强度值。这些是价值观:

您可以与一起使用以获取图像的颜色统计信息:

import webcolors
from PIL import Image
from collections import Counter

def get_colour_name(requested_colour):
    try:
        return webcolors.rgb_to_name(requested_colour)
    except ValueError:
        min_colours = {}
        for key, name_ in webcolors.css3_hex_to_names.items():
            r_c, g_c, b_c = webcolors.hex_to_rgb(key)
            rd = (r_c - requested_colour[0]) ** 2
            gd = (g_c - requested_colour[1]) ** 2
            bd = (b_c - requested_colour[2]) ** 2
            min_colours[(rd + gd + bd)] = name_
        return min_colours[min(min_colours.keys())]

image = Image.open('image.jpg')
pixels = image.load()
w, h = image.size
colors = []
for x in range(w):
    for y in range(h):
        colors.append(get_colour_name(pixels[x, y]))

for i, c in enumerate(Counter(colors).most_common(5)):
    print('{}. {:15} {:>2.1f}%'.format(i+1, c[0], c[1] * 100 / len(colors)))
如下图所示:

最常见的5种颜色是:

1. crimson         10.3%
2. maroon          9.8%
3. darkslategrey   9.2%
4. dimgrey         8.4%
5. grey            8.1%
您可以与一起使用以获取图像的颜色统计信息:

import webcolors
from PIL import Image
from collections import Counter

def get_colour_name(requested_colour):
    try:
        return webcolors.rgb_to_name(requested_colour)
    except ValueError:
        min_colours = {}
        for key, name_ in webcolors.css3_hex_to_names.items():
            r_c, g_c, b_c = webcolors.hex_to_rgb(key)
            rd = (r_c - requested_colour[0]) ** 2
            gd = (g_c - requested_colour[1]) ** 2
            bd = (b_c - requested_colour[2]) ** 2
            min_colours[(rd + gd + bd)] = name_
        return min_colours[min(min_colours.keys())]

image = Image.open('image.jpg')
pixels = image.load()
w, h = image.size
colors = []
for x in range(w):
    for y in range(h):
        colors.append(get_colour_name(pixels[x, y]))

for i, c in enumerate(Counter(colors).most_common(5)):
    print('{}. {:15} {:>2.1f}%'.format(i+1, c[0], c[1] * 100 / len(colors)))
如下图所示:

最常见的5种颜色是:

1. crimson         10.3%
2. maroon          9.8%
3. darkslategrey   9.2%
4. dimgrey         8.4%
5. grey            8.1%

你能展示预期的结果吗?你试过网络色彩吗?或者您想要其他类型的转换?@Mntfr我有HSV格式的值。@Alderven基本上我想要检测水果图像的颜色并打印颜色的名称。好的,但是您想要什么格式的数据?或者它不是必需的?你能显示预期的结果吗?你试过网络颜色吗?或者您想要其他类型的转换?@Mntfr我有HSV格式的值。@Alderven基本上我想要检测水果图像的颜色并打印颜色的名称。好的,但是您想要什么格式的数据?还是没有必要?