目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶,视频监控,工业质检,医疗诊断等场景。
目标检测的根本任务就是将图片或者视频中感兴趣的目标提取出来,目标的识别可以基于颜色,纹理,形状。其中颜色属性运用十分广泛,也比较容易实现。下面就向大家分享一个我做的小实验——通过OpenCV的Python接口来实现从视频中进行颜色识别和跟踪。
<嵌入src=" https://my-wechat.oss-cn-beijing.aliyuncs.com/WeChat_20191119211749_20191120091642.mp4 "> 嵌入>
下面就是我们完整的代码实现(已调试运行):
进口numpy np 进口cv2 字体=cv2.FONT_HERSHEY_SIMPLEX lower_green=np。数组([35、110、106])#绿色范围低阈值 upper_green=np。数组([77、255、255])#绿色范围高阈值 lower_red=np。数组([0,127,128])#红色范围低阈值 upper_red=np。数组([10、255、255])#红色范围高阈值 #需要更多颜色,可以去百度一下HSV阈值! #帽=cv2.VideoCapture (1. mp4) #打开视频文件 帽=cv2.VideoCapture(0) #打开USB摄像头 如果(cap.isOpened()): #视频打开成功 标志=1 其他: 国旗=0 num=0 如果(旗): 而(真正的): ret,?cap.read() #读取一帧 如果ret==False: #读取帧失败 打破 hsv_img=cv2。cv2.COLOR_BGR2HSV cvtColor(框架) mask_green=cv2。inRange (hsv_img lower_green upper_green) #根据颜色范围删选 mask_red=cv2。inRange (hsv_img lower_red upper_red) #根据颜色范围删选 mask_green=cv2。medianBlur (mask_green 7) #中值滤波 mask_red=cv2。medianBlur (mask_red 7) #中值滤波 掩码=cv2。bitwise_or (mask_green mask_red)=cv2 mask_green、轮廓、层次结构。findContours (mask_green cv2。RETR_EXTERNAL cv2.CHAIN_APPROX_NONE) mask_red、contours2 hierarchy2=cv2。findContours (mask_red cv2。RETR_EXTERNAL cv2.CHAIN_APPROX_NONE) 问的轮廓: (x, y, w h)=cv2.boundingRect(问) cv2。矩形(帧(x, y), (x + w, y + h) (0, 255, 255), 2) cv2。putText(框架、“绿色”(x, y - 5),字体,0.7 (0 255 0),2) 在contours2 cnt2: (x2, y2 w2, h3)=cv2.boundingRect (cnt2) cv2。矩形(帧(x2, y2), (x2 + w2, y2 + h3) (0, 255, 255), 2) cv2。putText(框架,“红色”(x2, y2 - 5),字体,0.7 (0,0,255),2) num=num + 1 cv2。imshow(“检波”法,帧) cv2.imwrite(“一个/% d.jpg”% num,框架) 如果cv2.waitKey (20),0 xff==27日: 打破 cv2.waitKey (0) cv2.destroyAllWindows ()
如图所示,我们将会检测到红色区域
最终的效果图:
以上所述是小编给大家介绍的50行Python代码实现视频中物体颜色识别和跟踪,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持。
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!