python颜色识别_浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法

本文介绍了两种Python3识别图片主要颜色的方法:使用PIL转换RGB到HSV并统计颜色,以及利用OpenCV进行HSV颜色范围过滤。通过实例详细解释了每一步操作,包括图片裁剪、颜色转换、二值化处理和形态学操作,以帮助读者理解颜色识别的过程。
摘要由CSDN通过智能技术生成

【更新】主要提供两种方案:

方案一:(参考网上代码,感觉实用性不是很强)使用PIL截取图像,然后将RGB转为HSV进行判断,统计判断颜色,最后输出RGB值

方案二:使用opencv库函数进行处理。(效果不错)

1、将图片颜色转为hsv,

2、使用cv2.inRange()函数进行背景颜色过滤

3、将过滤后的颜色进行二值化处理

4、进行形态学腐蚀膨胀,cv2.dilate()

5、统计白色区域面积

详解:方案一:

项目实际需要,对识别出来的车车需要标记颜色,因此采用方案如下:

1、通过import PIL.ImageGrab as ImageGrab 将识别出来的汽车矩形框裁剪出来

img_color=image.crop((left,right,top,bottom))

2、将裁剪出来的image进行颜色图像识别

RGB和hsv中间的转换关系,网上很多,我也没有具体去研究如何转换的,能用就行

附上测试,封装成函数方法:

import colorsys

import PIL.Image as Image

def get_dominant_color(image):

max_score = 0.0001

dominant_color = None

for count,(r,g,b) in image.getcolors(image.size[0]*image.size[1]):

# 转为HSV标准

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

score = (saturation+0.1)*count

if score > max_score:

max_score = score

dominant_color = (r,g,b)

return dominant_color

if __name__ == '__main__':

image = Image.open('test.jpg')

image &

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值