python opencv移动物体检测,opencv运动物体跟踪
目标跟踪是在摄像机视频中定位运动目标的过程,应用广泛。实时目标跟踪是许多计算机视觉应用的重要任务,例如监控、基于感知的用户界面、增强现实、基于对象的视频压缩和驾驶辅助。
实现视频目标跟踪的方法有很多种,在跟踪所有运动目标时,帧间的差异会变得有用;在视频中跟踪运动的手时,基于肤色的mean shift方法是最好的解决方案;当被跟踪对象的一个方面已知时,模板匹配是一种好的技术。
这段代码是做一个基本的运动检测,考虑到“背景帧”和其他帧的区别。
这种方法的检测结果相当不错,但是需要预先设置背景框。如果是在室外,光线的变化会造成误检,还是很有限的。
import v2 import numpy as NP camera=cv2 . video capture(0)#参数0表示第一个摄像机#确定视频是否打开if(camera . iso pen()):print( open )else:print( camera未打开)#为了测试,检查视频大小size=(int (camera.get (cv2 . cap _ prop _ frame _ width))、int(camera . get(cv2 .CAP _ PROP _ FRAME _ HEIGHT)))print( size: repr(size))es=cv2 . getstructuringelement(cv2。MORPH_ELLIPSE,(9,4))kernel=np.ones((5,5),np。uint8) background=none而true: #读取视频流grabbered,frame _ lwpcv=camera.read () #对帧进行预处理,先转换灰度图像,然后进行wsdyt滤波。#使用wsdyt滤镜模糊。处理原因:每一个输入的视频都会因为自然震动、光照变化或者摄像头本身产生噪音。平滑噪声是为了防止它在运动和跟踪过程中被检测到。gray _ lw pcv=cv2 . CVT color(frame _ lw pcv,cv2。COLOR_BGR2GRAY) gray_lwpCV=cv2。GaussianBlur(gray_lwpCV,(21,21),0) #如果背景为none,则将第一帧设置为整个输入的背景:background=gray _ lwpcv continue #对于从背景后面读取的每一帧,将计算北京与北京之间的差异,并获得不同的地图。#还需要应用threshold来获得黑白图像,并通过下面的代码来放大图像,以便归一化孔洞和缺陷。Diff=CV2。ABS diff(背景,灰色_ LWP CV) diff=CV2。Threshold (diff,25,25,cv2.thresh _ binary) [1] #二进制阈值diff=cv2 . explain(diff,es,iterations=2) #形态学膨胀#显示矩形图像,轮廓,层次=cv2.findcontexts (diff.copy(),cv2.retr _ external,cv2.chain _ approximate _ simple) #此函数计算c in contexts的图像中对象的轮廓:ifcv2.contour area (c) 1500: #对于矩形区域,只显示大于给定阈值的区域。对于具有恒定光照和低噪声的摄像机,没有必要设置轮廓最小尺寸的阈值Continue (x,y,w,h)=CV2.boundingrect (c) #该函数计算边界框CV2.rectangle (frame _ lwpcv,(x,y),(x w,y h),(0,255,0) 2) cv2.imshow (contours ,frame _ lwpcv) cv2.imshow (dis ,diff)key=cv2 . wait key(1)0x ff # Press q
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。