浅谈浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方识别判断图片主要颜色并和颜色库进行对比的方
法法
主要介绍了浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法,文中通过示例代码介绍的非常详
细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
【更新】主要提供两种方案:【更新】主要提供两种方案:
方案一:(参考网上代码,感觉实用性不是很强)使用PIL截取图像,然后将RGB转为HSV进行判断,统计判断颜色,最后输
出RGB值
方案二:使用opencv库函数进行处理。(效果不错)
1、将图片颜色转为hsv,
2、使用cv2.inRange()函数进行背景颜色过滤
3、将过滤后的颜色进行二值化处理
4、进行形态学腐蚀膨胀,cv2.dilate()
5、统计白色区域面积
详解:方案一:详解:方案一:
转载出处:www.jb51.net/article/62526.htm
项目实际需要,对识别出来的车车需要标记颜色,因此采用方案如下:
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 = image.convert('RGB')
print(get_dominant_color(image))
测试图
评论0