python+opencv实现移动侦测(帧差法)


Posted in Python onMarch 20, 2020

本文实例为大家分享了python+opencv实现移动侦测的具体代码,供大家参考,具体内容如下

1.帧差法原理

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

2.算法思路

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

python+opencv实现移动侦测(帧差法)

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_length
 fourcc = 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 0
 outt=[]
 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_lwpCV
  else:
   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+1
 out.release()
 cam.release()
 return outt,index,images```
##调取函数
outt=threh('new_video.mp4','test6.mp4',25,3000)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python复制目录结构脚本代码分享
Mar 06 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
python列表生成式与列表生成器的使用
Feb 23 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python版DDOS攻击脚本
Jun 12 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
python实现按首字母分类查找功能
Oct 31 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
如何通过命令行进入python
Jul 06 Python
python3 hdf5文件 遍历代码
May 19 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 #Python
Python 自由定制表格的实现示例
Mar 20 #Python
python实现opencv+scoket网络实时图传
Mar 20 #Python
python实现同一局域网下传输图片
Mar 20 #Python
python实现udp传输图片功能
Mar 20 #Python
python实现UDP协议下的文件传输
Mar 20 #Python
python实现TCP文件传输
Mar 20 #Python
You might like
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
python实现用户管理系统
2018/01/10 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
买卖协议书范本
2014/04/21 职场文书
药店促销活动总结
2014/07/10 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书