问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用python将文件夹中图片根据颜色分类

发布网友 发布时间:2022-04-23 04:59

我来回答

1个回答

热心网友 时间:2022-04-06 00:59


本文实例讲述了Python通过PIL获取图片主要颜色并和颜色库进行对比的方法。分享给大家供大家参考。具体分析如下:

这段代码主要用来从图片提取其主要颜色,类似Goolge和Bai的图片搜索时可以指定按照颜色搜索,所以我们先需要将每张图片的主要颜色提取出来,然后将颜色划分到与其最接近的颜色段上,然后就可以按照颜色搜索了。

在使用google或者搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死,开个玩笑,当然是通过机器识别的,海量的图片只有机器识别才能做到。

那用python能不能实现这种功能呢?答案是:能

利用python的PIL模块的强大的图像处理功能就可以做到,下面上代码: 

复制代码代码如下:

import colorsys
def get_dominant_color(image):
#颜色模式转换,以便输出rgb颜色值
image = image.convert('RGBA')
#生成缩略图,减少计算量,减小cpu压力
image.thumbnail((200, 200))
max_score = None
dominant_color = None
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


使用方法:

from PIL import Image
print get_dominant_color(Image.open('logo.jpg'))

这样就会返回一个rgb颜色,但是这个值是很精确的范围,那我们如何实现百度图片那样的色域呢??

其实方法很简单,r/g/b都是0-255的值,我们只要把这三个值分别划分相等的区间,然后组合,取近似值。例如:划分为0-127,和128-255,然后自由组合,可以出现八种组合,然后从中挑出比较有代表性的颜色即可。

当然我只是举一个例子,你也可以划分的更细,那样显示的颜色就会更准确~~大家赶快试试吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...结构的施工分包给其他单位那么是不是EPC总承包就不能分包 Win11玩不了地平线4如何解决_Win11玩不了地平线4怎么办 Win11玩不了地平线4如何解决_Win11玩不了地平线4怎么解决 地平线5警告显卡内存过低怎么办 极限竞速地平线5闪退怎么解决 极限竞速地平线5闪退解决方法 怎样册除手机屏幕上(精品游戏)图标 烧结普通砖有哪些 烧结普通砖都有哪些 ...4年后的年龄与弟弟3年前的年龄和是35岁。今年哥与弟各几岁??_百度... ...等于弟弟7年后的年龄,哥哥4年后与弟弟3年前的年龄的和是35岁。哥哥... 农村里,一般收完小麦,可以在地里种什么庄稼? 如何利用python将txt文件划分训练集和测试集 水稻种种下地三天了,上水地里长出不人少去年收割澈下稻苗,怎么去除? python文件是以什么为扩展名的文件 急需农谚! 有哪位大神指导下,Python中文件、模块与包三者之间有什么区别呀?麻烦解 ... 某人将发霉的玉米和今年新收的玉米混合在一起准备经过火车站托运出去卖,被人举报,被质监局扣了,说不符 python 批量提取文件名并分类 看到农民伯伯在地里收麦子日记怎么写 怎么样理解一个python项目的各种文件 梦见和死去多年的母亲在地里收油菜籽? 想问python能处理哪些类型的文件 玉米刚种下,地里有大草怎么处理? “八成熟,十成收;十成熟,二成丢。”是什么意思? 请问python如何按照属性分类 高丹草才从地里收回来那么大水分怎么才能做青储饲料? python 怎样识别文件类型 小麦收割机新离合片使用一段时间拉杆怎么调 python文件分类之后读取 收完生姜后地里能种什么庄稼? 用python将一个txt数据文件分成3个小文件怎么实现呢? 怎样从地里收获塑料? 怎样用python将文件里储存的时间按时间范围分类并且统计时间个数,然后... python 把文件内容分成三列 苹果4s发不出信息怎么回事? 苹果4s发送短信失败怎么回事 苹果4S发不出去短信 是怎么 回事? 我的iphone4s手机不能发短信了,怎么办 苹果4s发不出信息怎么回事 Iphone4S无法发短信拨打接收电话什么问题? iPhone4s不能发短信 iphone4s我的手机发不出去短信了 iphone4s打不出去接不进来 短信发不了 我手机苹果4s怎么都发不了短信望高人指点我是联通卡 苹果4s,插上手机卡,不能打电话发短信,显示无服务,是怎么回事? 我iphone4s发不出去短信. 用联通3g卡 iPhone4S短信发不出去 急!手机(iphone4s)给某个号码的短信发不出去! iPhone4s手机发短信显示‘尚未送达’怎么解决? 苹果4s设置成功了短信中心号码还是发不了短信怎么办?