我正在寻找一种使用python在图像中找到最主要颜色/色调的方法。无论是平均阴影或最常见的出RGB将做。我查看了Python映像库,在他们的手册中找不到任何与我所要查找的内容相关的内容,也没有简要介绍VTK。
不过,我确实找到了一个PHP脚本,它可以满足我的需要,here(需要登录才能下载)。脚本似乎将图像大小调整为150*150,以显示主色。然而,在那之后,我相当迷茫。我确实考虑过编写一些东西,将图像大小调整为一个较小的大小,然后每隔一个像素左右检查一次它的图像,尽管我认为这将非常低效(尽管将这个想法实现为C python模块可能是一个想法)。
然而,在这一切之后,我仍然感到困惑。所以我转向你,所以。有没有一种简单有效的方法来找到图像的主色。
如果你还在寻找答案,下面是对我有用的,尽管效率不高:
下面是使用Pillow和Scipy's cluster package的代码。
为了简单起见,我将文件名硬编码为“image.jpg”。调整图像大小是为了提高速度:如果您不介意等待,请注释掉resize调用。当在这个{a3}上运行时,它通常说主色是{d8c865,它大致相当于两个辣椒左下角的亮黄色区域。我之所以说“通常”,是因为使用的clustering algorithm具有一定程度的随机性。有多种方法可以改变这一点,但对于你的目的,它可能很适合。(如果需要确定的结果,请查看kmeans2()变量上的选项。)
注意:当我将集群的数量从5个扩展到10个或15个时,它经常给出绿色或蓝色的结果。给定输入图像,这些结果也是合理的。。。我也分不清哪种颜色在那张图片中占主导地位,所以我不怪算法!
还有一个小小的好处:只使用N种最常见的颜色保存缩小的图像:
Python图像库在图像对象上有getcolors方法:
我想你还是可以尝试在这之前调整图像的大小,看看它是否有更好的表现。
相关问题 更多 >
编程相关推荐