摄像头移动检测算法软件,摄像头移动检测算法有哪些
算法参考:3359docs.opencv.org/3.1.0/db/D5C/tutorial _ py _ BG _ subtraction.html
运动检测法,摄像头按照不同帧率采集的图像,会由CPU按照一定的算法进行计算和比较。当画面出现变化,比如有人走过,镜头移动,计算比较结果得到的数字会是
超过阈值
,表示系统可以自动做出相应的处理。运动检测允许在指定区域中识别图像的变化,可以检测运动物体的存在,并且可以避免由光线变化引起的干扰。但是,如何从实时序列图像中从背景图像中提取出变化区域,对于目标分类、跟踪等后期处理来说,考虑运动区域的有效分割也很重要,因为后续处理中只会考虑图像中运动区域对应的像素。然而,由于
动态变化
背景图像的影响,如天气、光照、阴影和混沌,运动检测成为一项相当困难的任务。背景减法(Background Subtraction)是目前运动检测中最常用的方法。它是一种利用当前图像和背景图像之间的差异来检测运动区域的技术。一般能提供最完整的特征数据,但对动态场景的变化特别敏感,如光照、无关事件的干扰等。最简单的背景模型是时间平均图像,大多数研究人员正在致力于开发不同的背景模型,以减少动态场景变化对运动分割的影响。
Opencv OpenCV是基于BSD许可证(开源)的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。轻巧高效。——由一系列C函数和几个C类组成。同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉中的多种通用算法。
2.《Improved adaptive Gaussian mixture model for background subtraction》和《Efficient Adaptive Density Estimation per Image Pixel for the Task of Background Subtraction》由Zivkovic在BackgroundSubtractorMOG2库中提出。由cv2使用。BackgroundSubtractorMOG2
开始安装opencv库pip3安装opencv-python
使用cv2.backgroundSubtractorMog2直接导入cv2 cap=cv2 . video capture(/users/apple/desktop/Obama-speech insert picture description . MP4 此处)。fgbg=cv2 . createbackgroundsubtractormog 2()while(1):ret,frame=cap . read()Image=fgbg . apply(frame)cv2 . im show( result ,Image)k=cv2 . wait key(50)0x ff if k==27:break cap . release()cv2 . destructily windows()渲染:
你可以看到有很多噪音。让我们开始降噪过程。
均值滤波降噪导入cv2导入numpy导入random cap=cv2 . video capture(/users/apple/desktop/Obama s speech . MP4 )FGBG=cv2 . createbackgroundsubtractormog 2()while(1):ret,Frame=cap . read()for j in range(2):#对I in range(10000):height=Frame . shape[0]-1 width=Frame . shape[1]-1a=random . randint(0,height) b=random.randint 3)image=fgbg . apply(frame)for j in range(5):#降低视频滤镜5次背景减除后的噪点(个人实验)for I in range(10000):height=image . shape[0]-1 width=image . shape[1]-1 a=random . randint(0,height) b=random.randint(0,width) image[a,b]=255 image=cv2 . medianblur(image,3)white=0 gray=0 for range(height 1):for Col]==255:white=white 1 if image[row,Col]==127:gray=gray 1 print( white:,white) print (gray:,gray) cv2.imshow (result ,image)k=cv2 . waitkey(50)0x ff if k==27:break cap . release()
效果比原来有所提升(可能选的例子不太好,有兴趣可以选一些有固定摄像头的路面监控视频)