用Python提取图片主要颜色
2013-11-20 16:31
281 查看
原文来自:
http://www.sharejs.com/codes/python/8655
这段代码主要用来从图片提取其主要颜色,类似Goolge和Baidu的图片搜索时可以指定按照颜色搜索,所以我们先需要将每张图片的主要颜色提取出来,然后将颜色划分到与其最接近的颜色段上,然后就可以按照颜色搜索了。
代码转自:http://www.pythontab.com
在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死,开个玩笑,当然是通过机器识别的,海量的图片只有机器识别才能做到。
那用python能不能实现这种功能呢?答案是:能
利用python的PIL模块的强大的图像处理功能就可以做到,下面上代码:
end.
个人总结:
载入一张lena以后,
看过这种颜色以后,觉得基本符合预期,程序可以采用。
为了用在树叶识别上,先做一个简单的实验:
在上述代码中,添加一行:
提取出的颜色是
符合预期,还可以再提高,以后再尝试:先提取树叶的区域,再算主要颜色
http://www.sharejs.com/codes/python/8655
这段代码主要用来从图片提取其主要颜色,类似Goolge和Baidu的图片搜索时可以指定按照颜色搜索,所以我们先需要将每张图片的主要颜色提取出来,然后将颜色划分到与其最接近的颜色段上,然后就可以按照颜色搜索了。
代码转自:http://www.pythontab.com
在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死,开个玩笑,当然是通过机器识别的,海量的图片只有机器识别才能做到。
那用python能不能实现这种功能呢?答案是:能
利用python的PIL模块的强大的图像处理功能就可以做到,下面上代码:
import colorsys def get_dominant_color(image): #颜色模式转换,以便输出rgb颜色值 image = image.convert('RGBA') #生成缩略图,减少计算量,减小cpu压力 image.thumbnail((200, 200)) max_score = 0//原来的代码此处为None dominant_color = 0//原来的代码此处为None,但运行出错,改为0以后 运行成功,原因在于在下面的 score > max_score的比较中,max_score的初始格式不定 for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]): # 跳过纯黑色 if a == 0: continue saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1] y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235) y = (y - 16.0) / (235 - 16) # 忽略高亮色 if y > 0.9: continue # Calculate the score, preferring highly saturated colors. # Add 0.1 to the saturation so we don't completely ignore grayscale # colors by multiplying the count by zero, but still give them a low # weight. score = (saturation + 0.1) * count if score > max_score: max_score = score dominant_color = (r, g, b) return dominant_color
end.
个人总结:
载入一张lena以后,
print(get_dominant_color(Image.open('lena.jpg'))) (171, 65, 79)
看过这种颜色以后,觉得基本符合预期,程序可以采用。
为了用在树叶识别上,先做一个简单的实验:
在上述代码中,添加一行:
if ((r>200)&(g>200)&(b>200)): continue也就是说把白色,或者接近白色的部分去除,再提取颜色,这才是我预期的结果,实验结果为:
提取出的颜色是
符合预期,还可以再提高,以后再尝试:先提取树叶的区域,再算主要颜色
相关文章推荐
- Python3识别判断图片主要颜色并和颜色库进行对比的方法
- Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
- 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)
- php 提取图片主要颜色
- Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
- [Python]_[使用正则表达式提取迅雷界面配置文件XLUE的图片]
- OpenCV提取显示一张图片的R,G,B颜色分量
- python图像主色调(主颜色)提取,在hsv空间k均值迭代实现
- python提取CSS文件中背景图片等属性的外部链接值
- Python爬虫urllib2笔记(三)之使用正则表达式提取百度贴吧网页中的楼主发的图片
- [Python]_[使用正则表达式提取迅雷界面配置文件XLUE的图片]
- python---对指定文件内所有验证码图片颜色更换,PIL,Image,os,time
- php检测图片主要颜色的方法
- Python3 Tkinter基础 Label 让字体显示在图片的上方 设置字体颜色fg,字体字体大小font
- OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- 获取图片主要颜色
- OpenCV提取显示一张图片的R,G,B颜色分量
- 京东猪脸识别比赛数据预处理:用Python将视频每一帧提取存储为图片
- 如何提取文献图表中的散点数据,并python的matplotlib包重新绘制图片
- python通过pil为png图片填充上背景颜色的方法