Python中的主颜色检测

Python中的主颜色检测,python,colors,detection,Python,Colors,Detection,我有大约3000张图片和13种不同的颜色(大多数图片的背景是白色)。如果一个图像的主颜色是这13种不同颜色中的一种,我希望将它们关联起来 我见过类似的问题,比如要求一个平均颜色算法。我几乎复制了这些代码,使用Python图像库和直方图,并使其正常工作——但我发现它对于确定主颜色来说不太可靠 有什么想法吗?或者可以解决这个问题的图书馆 提前谢谢 :编辑: 谢谢各位,你们都说了同样的话,创建“bucket”,并用图像中每个最近的像素增加bucket计数。我似乎得到了很多返回“白色”或“米色”的图像,

我有大约3000张图片和13种不同的颜色(大多数图片的背景是白色)。如果一个图像的主颜色是这13种不同颜色中的一种,我希望将它们关联起来

我见过类似的问题,比如要求一个平均颜色算法。我几乎复制了这些代码,使用Python图像库和直方图,并使其正常工作——但我发现它对于确定主颜色来说不太可靠

有什么想法吗?或者可以解决这个问题的图书馆

提前谢谢

:编辑: 谢谢各位,你们都说了同样的话,创建“bucket”,并用图像中每个最近的像素增加bucket计数。我似乎得到了很多返回“白色”或“米色”的图像,这也是大多数图像的背景。有没有办法绕过或忽略背景


再次感谢。

我个人会将颜色空间分成8-16种主要颜色,然后对每个像素,我会将最接近的颜色桶增加一个。最后,像素量最高的桶的颜色获胜


基本上,考虑中值而不是平均值。你只关心图像中的颜色,而平均颜色通常会给你一个全新的颜色。

因为你试图匹配一小部分先前存在的颜色,你可以尝试不同的方法。根据所有颜色测试每个图像,看看哪一个最匹配

至于进行匹配,我会首先将每个图像的大小调整为较小的大小,以减少您为每个图像所做的工作量;我们对图像颜色的感知并不太依赖于细节的数量。对于较小图像的每个像素,找出13种颜色中最接近的颜色。如果它在某个阈值内,则为该颜色碰撞计数器。最后,13种颜色中计数最高的一种为获胜者。

您可以使用该功能获取图像中所有颜色的列表。它以以下形式返回元组列表:

(N, COLOR)
其中
N
是图像中出现颜色
color
的次数。要获得最大出现颜色,可以将列表传递给函数:

>>> from PIL import Image
>>> im = Image.open("test.jpg")
>>> max(im.getcolors(im.size[0]*im.size[1]))
(183, (255, 79, 79))

请注意,我将
im.size[0]*im.size[1]
传递给了getcolors函数,因为这是最大的
maxcolors
值(有关详细信息,请参阅)。

您对颜色的定义是什么?rgb三联体?(r/g,b/g)?hsv空间的色调?很抱歉模棱两可-我的意思是RGB三倍。图像库现在叫什么?我知道了<代码>从PIL导入图像