Sha*_*han 7 algorithm colors image-processing python-imaging-library
根据@ SO的建议,我已经编制了一组库存图像的平均颜色.
r,g,b = image.convert("RGB").resize((1,1),Image.ANTIALIAS).getpixel((0,0))
现在,我想向用户呈现一个色轮,并对我的目录运行搜索,以查找与所选颜色最匹配的图像.
我已经阅读了这里发布的几个问题,建议"找到两种颜色之间的距离",并参考Flickr Hacks一书.
Flickr Hack距离算法似乎基本上是:
diffr = checkImage.r - search_r
diffg = checkImage.g - search_g
diffb = checkImage.b - search_b
distance =(diffr*diffr + diffg*diffg + diffb*diffb)
如果距离<threshold则匹配.
这种方法需要我计算搜索颜色和每个图像的颜色指纹之间的距离.我想知道是否有办法以某种方式根据所选颜色(中心点)和预定阈值(或搜索半径)指定"搜索区域".然后构造一个类似SQL的查询来返回属于该区域的所有图像.
这可能吗??
顺便说一下,我正在使用PIL和相关库在Python中实现它.
谢谢你的帮助!
SR
您可以通过对每个分量进行比较而不是平方来查找距离,从而显着节省计算量。
if abs(check.r - search.r) < threshold and
abs(check.g - search.g) < threshold and
abs(check.b - search.b) < threshold
Run Code Online (Sandbox Code Playgroud)
将其与缓存表相结合可能足以满足您所做的任何事情。