python opencv实现运动检测
本文实例为大家分享了pythonopencv运动检测的具体代码,供大家参考,具体内容如下
#-*-coding:utf-8-*- __author__='kingking' __version__='1.0' __date__='14/07/2017' importcv2 importnumpyasnp importtime camera=cv2.VideoCapture(0)#参数0表示第一个摄像头 #判断视频是否打开 if(camera.isOpened()): print('Open') else: print('摄像头未打开') background=cv2.imread('img.png',0)#读入一幅图像 es=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(9,4)) whileTrue: #按'q'健退出循环 key=cv2.waitKey(1)&0xFF #读取视频流 grabbed,img=camera.read() gray1=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) gray=cv2.GaussianBlur(gray1,(21,21),0)#可在这添加处理程序 #!!!等相机稳定后按下W选择背景 ifkey==ord('w'): background=gray print'背景已选定' diff=cv2.absdiff(gray,background) binary=cv2.threshold(diff,25,255,cv2.THRESH_BINARY)[1]#二值化阈值处理 dilation=cv2.dilate(binary,es,iterations=2)#形态学膨胀<--可在这添加处理程序 contours,hierarchy=cv2.findContours(dilation.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) forcincontours: #对于矩形区域,只显示大于给定阈值的轮廓,所以一些微小的变化不会显示。 ifcv2.contourArea(c)<1500: continue (x,y,w,h)=cv2.boundingRect(c)#该函数计算矩形的边界框 cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) cv2.imshow('img',img) cv2.imshow('dilation',dilation) ifkey==ord('q'): break camera.release()#ubuntu一定要释放相机资源否则要重启才能再次使用 cv2.destroyAllWindows()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。