概述
我这里使用了两个颜色来做测试
分别是红色和蓝色
当摄像头前面是红色的时候就打印出 Red
当摄像头前面是蓝色的时候就打印出 Blue
import numpy as np
import cv2
red_lower = np.array([0,43,46])
red_upper = np.array([10,255,255])
blue_lower = np.array([100,43,46])
blue_upper = np.array([124,255,255])
cap = cv2.VideoCapture(0)
cap.set(3,320)
cap.set(4,240)
def ChestRed():
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, red_lower, red_upper)
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.GaussianBlur(mask, (3, 3), 0)
return mask
def ChestBule():
ret, frame = cap.read()
frame = cv2.GaussianBlur(frame, (5, 5), 0)
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, blue_lower, blue_upper)
mask = cv2.GaussianBlur(mask, (3, 3), 0)
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
if 25 < len(cnts) < 29:
print("Blue!")
while 1:
ret,frame = cap.read()
frame = cv2.GaussianBlur(frame,(5,5),0)
hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
mask = ChestRed()
ChestBule()
res = cv2.bitwise_and(frame,frame,mask=mask)
cnts = cv2.findContours(mask.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2]
if 20<len(cnts)<30:
print("Red!")
cv2.imshow("mask",mask)
cv2.imshow("res",res)
if cv2.waitKey(5) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
用电脑测试成功
现在是可以检查出颜色了,如果要移植到树莓派上的话也是可以的
就是前提得是树莓派上的opencv版本是3以上
最后
以上就是寒冷铃铛为你收集整理的Python-树莓派 + Opencv 实现颜色的识别的全部内容,希望文章能够帮你解决Python-树莓派 + Opencv 实现颜色的识别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复