1.帧差法原理

移动侦测即是根据视频每帧或者几帧之间像素的差异,对差异值设置阈值,筛选大于阈值的像素点,做掩模图即可选出视频中存在变化的桢。帧差法较为简单的视频中物体移动侦测,帧差法分为:单帧差两桢差、和三桢差。随着帧数的增加是防止检测结果的重影。

2.算法思路

文章以截取视频为例进行单帧差法移动侦测

3.python 实现代码

def threh(video,save_video,thres1,area_threh):cam = cv2.VideoCapture(video)#打开一个视频input_fps = cam.get(cv2.CAP_PROP_FPS)ret_val, input_image = cam.read()index=[]images=[]images.append(input_image)video_length = int(cam.get(cv2.CAP_PROP_FRAME_COUNT))input_image=cv2.resize(input_image,(512,512))ending_frame = video_lengthfourcc = cv2.VideoWriter_fourcc(*'XVID')out = cv2.VideoWriter(save_video,fourcc, input_fps, (512, 512))gray_lwpCV = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0)background=gray_lwpCV# es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))i = 0 # default is 0outt=[]while(cam.isOpened()) and ret_val == True and i <2999:## if i % 2==1:ret_val, input_image = cam.read()input_image=cv2.resize(input_image,(512,512))gray_lwpCV = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0)diff = cv2.absdiff(background, gray_lwpCV)outt.append(diff)#跟着图像变换背景tem_diff=diff.flatten()tem_ds=pd.Series(tem_diff)tem_per=1-len(tem_ds[tem_ds==0])/len(tem_ds)if (tem_per <0.2 )| (tem_per>0.75):background=gray_lwpCVelse:diff = cv2.threshold(diff, thres1, 255, cv2.THRESH_BINARY)[1]ret,thresh = cv2.threshold(diff.copy(),150,255,0)contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)#     contours, hierarchy = cv2.findContours(diff.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for c in contours:if (cv2.contourArea(c) < area_threh) | (cv2.contourArea(c) >int(512*512*0.3) ) :      # 对于矩形区域,只显示大于给定阈值的轮廓(去除微小的变化等噪点)continue(x, y, w, h) = cv2.boundingRect(c) # 该函数计算矩形的边界框cv2.rectangle(input_image, (x, y), (x+w, y+h), (0, 255, 0), 2) index.append(i)#     cv2.imshow('contours', input_image)#     cv2.imshow('dis', diff)out.write(input_image)images.append(input_image)i = i+1out.release()cam.release()return outt,index,images```
##调取函数
outt=threh('new_video.mp4','test6.mp4',25,3000)

python+opencv移动侦测(帧差法)相关推荐

  1. python识别重影验证码_python+opencv实现移动侦测(帧差法)

    本文实例为大家分享了python+opencv实现移动侦测的具体代码,供大家参考,具体内容如下 1.帧差法原理 移动侦测即是根据视频每帧或者几帧之间像素的差异,对差异值设置阈值,筛选大于阈值的像素点, ...

  2. Python与OpenCV(一)——基于帧差法的运动目标检测程序分析

    OpenCV提供了强大的图像处理功能,与Python的结合堪称完美... 这一次,我们试一下用帧差法来完成对运动目标的检测与跟踪. 帧差法的原理是这样的:由于摄像机采集的视频序列具有连续性的特点,所以 ...

  3. 【opencv】(11) 背景建模,帧差法、混合高斯模型,实战:行人检测,附python完整代码和数据集

    各位同学好,今天和大家分享一下opencv背景建模相关操作.主要介绍两种背景建模方法,帧差法和混合高斯模型. 案例简介:现有一份路口摄像机拍摄的行人流视频,通过背景建模方法,区分背景和前景,完成行人识 ...

  4. 利用python语言实现帧差法,python+opencv实现帧差法

    实验效果如下图: 需要的可以下载代码文件直接就可以运行看看效果哦. 帧差法实现运动目标检测

  5. Python实现视频运动目标检测——帧差法

    Python实现视频运动目标检测--帧差法 在许多场景中,我们需要对视频中的运动目标进行检测.而在这个过程中,帧差法是一种常用的方法.本文将详细阐述Python如何利用帧差法实现视频运动目标检测. 首 ...

  6. opencv进阶-背景建模-(帧差法与混合高斯模型)

    背景减除(Background Subtraction)是许多基于计算机视觉的任务中的主要预处理步骤.如果我们有完整的静止的背景帧,那么我们可以通过帧差法来计算像素差从而获取到前景对象.但是在大多数情 ...

  7. opencv 帧差法 absdiff

    opencv 帧差法 absdiff opencv2.3.1里的以下函数可计算当前帧与背景之差的绝对值. cv::absdiff(backgroundImage,currentImage,foregr ...

  8. 相邻帧差法和三帧差法

    相邻帧差法和三帧差法 原文地址:https://blog.csdn.net/dcrmg/article/details/52234929 帧间差分法是通过对视频中相邻两帧图像做差分运算来标记运动物体的 ...

  9. 目标检测、追踪梳理:帧差法、光流法、背景减除法

    (0)总览 运动目标检测是指在序列图像中检测出变化区域并将运动目标从背景图像(背景层)中提取出来.通常情况下,目标分类.跟踪和行为理解等后处理过程仅仅考虑图像中对应于运动目标的像素区域(前景层),因此 ...

  10. 图像处理+帧差法实现对车辆的识别框选

    每一帧一个动作,连接起形成一个动画 帧差法:对每一帧进行分析,对帧内分为动态和静态物体,前一帧与后一帧相对移动的物体识别出. opencv中有专门对帧差的函数,以识别运动中的物体 原视频图像: 函数设 ...

最新文章

  1. SQL Server2019数据库查询所有数据库名、表名、表结构、表字段、主键方法演示,执行sql提示对象名‘user_tab_columns‘、 ‘user_cons_columns‘ 无效问题解决
  2. java atomiclong 使用_java并发:原子类之AtomicLong
  3. 趣说游戏AI开发:曼哈顿街角的A*算法
  4. java从外部得到数据_java – 如何实现Observer以从侦听器获取数据?
  5. img的属性alt 与 title的区别
  6. python 删除大表数据
  7. crack密码验证破解
  8. 彩虹易支付全开源码全新完全开源无任何加密易支付程序
  9. android下拉菜单_如何调整和重新排列Android的快速设置下拉菜单
  10. Ubuntu16.04解决arpspoof时出现arpspoof: libnet_check_iface() ioctl: No such device问题
  11. PayPal注册绑卡使用教程
  12. 计算机英特尔显卡在哪找,Win10英特尔显卡设置图标不见了该怎么办?
  13. C语言基础之十进制与二进制转换
  14. unity图片指定任意不规则区域显示
  15. Mysql ERROR: 1253 解决方法
  16. Spring Cloud微服务之Feign——声明式服务间调用
  17. 英语Hecatolite月长石hecatolite月光石
  18. oracle exception others,Oracle PL/SQL之EXCEPTION -- WHEN OTHERS THEN
  19. python----four
  20. js验证银行卡号属于哪家银行

热门文章

  1. linux 终端命令字体大小,如何实现更改Linux终端字体的种类和大小
  2. 西点军校的经典法则(转载)
  3. ShadowGun 暗影之枪 项目源码,手机优化示例关卡
  4. 物联网安全 - 对称加密算法
  5. java word jar包_处理word的poi的jar包
  6. 八进制和十六进制转二进制
  7. c++ 十六进制转二进制数_二进制数制
  8. dnf维护怎么偷跑进服务器,DNF:回归玩家必看,这四点忠告要牢记,一不小心就被劝退...
  9. PostGreSQL8.0.0中文手册
  10. HTML5响应式手机模板:【超炫购物模板】——仿拍鞋网商城手机网站模板( HTML+CSS+JavaScript) 企业手机网站模板...