python opencv根据颜色进行目标检测的方法示例
颜色目标检测就是根据物体的颜色快速进行目标定位。使用cv2.inRange函数设定合适的阈值,即可以选出合适的目标。
建立项目colordetect.py,代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- importnumpyasnp importcv2 defcolorDetect(): image=cv2.imread('./1.png') #使用RGB颜色空间检测红蓝黄灰,设置合适的阈值 boundaries=[ ([17,15,100],[50,56,200]), ([86,31,4],[220,88,50]), ([25,146,190],[62,174,250]), ([103,86,65],[145,133,128]) ] forlower,upperinboundaries: lower=np.array(lower,dtype='uint8') upper=np.array(upper,dtype='uint8') #低于lower和高于upper的像素为黑色,lower-upper之间的像素为白色 mask=cv2.inRange(image,lower,upper) #利用蒙版,进行图像的逻辑与运算 output=cv2.bitwise_and(image,image,mask=mask) cv2.imshow('image',np.hstack([image,output])) cv2.waitKey(0) cv2.destroyAllWindows() defmain(): colorDetect() if__name__=="__main__": main()
定义RGB颜色列表:
boundaries=[ ([17,15,100],[50,56,200]), ([86,31,4],[220,88,50]), ([25,146,190],[62,174,250]), ([103,86,65],[145,133,128]) ]
该部分([17,15,100],[50,56,200]),表示图像像素R>=100,B>=15,G>=15和R<=200,B<=56,G<=50的像素将视为红色。
执行代码,结果如下:
总结
要检测图像中颜色,第一件事要做的就是定义像素值的上限和下限。不同的颜色空间具有不同上下限值,定义了上限和下限后,就可以调用cv2.inRange方法返回一个mask,将该mask与图像进行逻辑与bitwise_and就可以得到该图像。
参考资料
https://www.pyimagesearch.com
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。