Python 如何使用预先指定的颜色调色板找到图像的主色调?

Python 如何使用预先指定的颜色调色板找到图像的主色调?,python,image,image-processing,colors,python-imaging-library,Python,Image,Image Processing,Colors,Python Imaging Library,我试图找到一幅图像的主色调,使主色调适合于12种预先指定的颜色(红色、橙色、黄色、绿色、青色、蓝色、紫色、粉色、白色、灰色、黑色、棕色)中的某个“区域”。也就是说,我想输入一个图像,例如,如果图像主要是黄绿色,那么程序应该输出黄色或绿色(取决于它是绿多于黄还是黄多于绿) 似乎大多数人使用k均值聚类来寻找主色,但是(如果我是正确的话)这些k区域似乎并不是预先指定的。这就是指定的数字k,但是如果我输入k=12,我认为算法不一定会根据我的颜色列表划分区域。还有其他方法吗 我尝试了以下方法(在Pytho

我试图找到一幅图像的主色调,使主色调适合于12种预先指定的颜色(红色、橙色、黄色、绿色、青色、蓝色、紫色、粉色、白色、灰色、黑色、棕色)中的某个“区域”。也就是说,我想输入一个图像,例如,如果图像主要是黄绿色,那么程序应该输出黄色或绿色(取决于它是绿多于黄还是黄多于绿)

似乎大多数人使用k均值聚类来寻找主色,但是(如果我是正确的话)这些k区域似乎并不是预先指定的。这就是指定的数字k,但是如果我输入k=12,我认为算法不一定会根据我的颜色列表划分区域。还有其他方法吗

我尝试了以下方法(在Python中使用PIL):检索图像的直方图并找到对应于R、G和B值的最大值(分别称为R1、G1、B1)。然后通过查找R1、G1、B1和调色板列表中R、G、B值之间的最小欧氏距离,找到“最接近”的颜色。这似乎效果不太好,因为检索到的许多颜色都是灰色和黑色,而与其他颜色相比,图像本身似乎没有太多的灰色或黑色

这个程序是用Python编写的


有没有另一种方法可以在预先指定的调色板中找到主色调

如果您显示调色板、两个示例图像以及每个图像的预期结果,这会有所帮助。如果您将图像中的每种颜色映射到调色板中最接近的颜色,然后找到结果图像中最常出现的调色板条目,这不起作用,因为…?您解决了吗?