我如何(非常近似地)概括基于它的 CMYK 或 RGB 数字的颜色名称?
How do I (very approximately) generalize the name of the color based in it's CMYK or RGB numbers?
我正在逐像素处理图像,我需要获取每个像素的颜色名称。我有这些主要的颜色名称:黄色、品红色、青色、红色、绿色、蓝色、白色、黑色。
我还有每个像素的 RGB 和 CMYK 编号。我如何根据这些数字将像素的颜色近似为上述颜色之一?它不需要精确,只是一个非常一般的近似值。我可以用 RGB 或 CMYK 做任何数学运算来确定吗?我宁愿选择一个简单的解决方案而不是一个精确的解决方案。
让我们以此作为起始图像:
现在,制作一张我们想要寻找的所有颜色的地图,记住 ImageMagick 使用 X11 颜色名称,其中 green
被命名为 lime
:
magick xc:black xc:white xc:red xc:lime xc:blue xc:cyan xc:magenta xc:yellow +append map.png
这使得这个 - 我已经放大了,因为它只有 8 像素宽和 1 像素高:
现在,我们只需要 imageMagick 将帕丁顿熊中的所有像素映射到我们地图中颜色最接近的任何颜色:
magick paddington.png +dither -remap map.png result.png
现在我们看一下结果的颜色图中像素的分布:
magick identify -verbose result.png | grep -A9 Histogram
输出
Histogram:
78839: ( 0, 0, 0) #000000 black
15057: ( 0, 0,255) #0000FF blue
1: ( 0,255, 0) #00FF00 lime
22422: ( 0,255,255) #00FFFF cyan
18103: (255, 0, 0) #FF0000 red
11: (255, 0,255) #FF00FF magenta
5809: (255,255, 0) #FFFF00 yellow
19758: (255,255,255) #FFFFFF white
而且我们可以看到在 400x400 中有 78839 个像素是黑色的,15057 个像素是蓝色的……等等。
请注意,您可以使用 wand
完成所有这些操作,它是 Python 绑定到 ImageMagick。
虽然发布的其他解决方案适用于已知名称,但请查看 this 之类的模型和论文,以实际概括和理解如何将(甚至)未知颜色翻译成有用的名称。
编辑:尽管这不是 OP 想要的,但我最终还是花了几个小时将其连接起来以便在 Docker/VSCode 内轻松工作。请参阅 here 以了解快速起床的方法和 运行 此存储库。
希望对大家有所帮助!
我正在逐像素处理图像,我需要获取每个像素的颜色名称。我有这些主要的颜色名称:黄色、品红色、青色、红色、绿色、蓝色、白色、黑色。 我还有每个像素的 RGB 和 CMYK 编号。我如何根据这些数字将像素的颜色近似为上述颜色之一?它不需要精确,只是一个非常一般的近似值。我可以用 RGB 或 CMYK 做任何数学运算来确定吗?我宁愿选择一个简单的解决方案而不是一个精确的解决方案。
让我们以此作为起始图像:
现在,制作一张我们想要寻找的所有颜色的地图,记住 ImageMagick 使用 X11 颜色名称,其中 green
被命名为 lime
:
magick xc:black xc:white xc:red xc:lime xc:blue xc:cyan xc:magenta xc:yellow +append map.png
这使得这个 - 我已经放大了,因为它只有 8 像素宽和 1 像素高:
现在,我们只需要 imageMagick 将帕丁顿熊中的所有像素映射到我们地图中颜色最接近的任何颜色:
magick paddington.png +dither -remap map.png result.png
现在我们看一下结果的颜色图中像素的分布:
magick identify -verbose result.png | grep -A9 Histogram
输出
Histogram:
78839: ( 0, 0, 0) #000000 black
15057: ( 0, 0,255) #0000FF blue
1: ( 0,255, 0) #00FF00 lime
22422: ( 0,255,255) #00FFFF cyan
18103: (255, 0, 0) #FF0000 red
11: (255, 0,255) #FF00FF magenta
5809: (255,255, 0) #FFFF00 yellow
19758: (255,255,255) #FFFFFF white
而且我们可以看到在 400x400 中有 78839 个像素是黑色的,15057 个像素是蓝色的……等等。
请注意,您可以使用 wand
完成所有这些操作,它是 Python 绑定到 ImageMagick。
虽然发布的其他解决方案适用于已知名称,但请查看 this 之类的模型和论文,以实际概括和理解如何将(甚至)未知颜色翻译成有用的名称。
编辑:尽管这不是 OP 想要的,但我最终还是花了几个小时将其连接起来以便在 Docker/VSCode 内轻松工作。请参阅 here 以了解快速起床的方法和 运行 此存储库。
希望对大家有所帮助!