我正在逐像素处理图像,我需要获取每个像素的颜色名称。我有这些主要颜色名称:黄色、洋红色、青色、红色、绿色、蓝色、白色、黑色。我也有每个像素的RGB和CMYK数值。基于这些数字,我如何将像素的颜色大致近似到上述其中一个颜色?它不需要非常精确,只是一个非常一般性的近似值。是否有任何数学方法可以使用RGB或CMYK来确定呢?我宁愿选择简单的解决方案而不是精确的解决方案。
green
被命名为 lime
:magick xc:black xc:white xc:red xc:lime xc:blue xc:cyan xc:magenta xc:yellow +append map.png
magick artistic-swirl.jpg +dither -remap map.png result.png
现在我们来看一下结果的颜色映射中像素的分布情况:magick identify -verbose result.png | grep -A9 Histogram
输出
Histogram:
5063: (0,0,0) #000000 black
40831: (0,0,255) #0000FF blue
2831: (0,255,0) #00FF00 lime
44027: (0,255,255) #00FFFF cyan
61648: (255,0,0) #FF0000 red
29828: (255,0,255) #FF00FF magenta
38729: (255,255,0) #FFFF00 yellow
27043: (255,255,255) #FFFFFF white