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 09 Python
Python出现segfault错误解决方法
Apr 16 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
python如何实现数据的线性拟合
Jul 19 Python
python中删除某个元素的方法解析
Nov 05 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
Python处理PDF与CDF实例
Feb 26 Python
解决pycharm中的run和debug失效无法点击运行
Jun 09 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伪静态页面函数附使用方法
2008/06/20 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
php导出CSV抽象类实例
2014/09/24 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
javascript 浏览器检测代码精简版
2010/03/04 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
2017/09/07 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
python之语音识别speech模块
2020/09/09 Python
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
班组长的岗位职责
2013/12/09 职场文书
迟到早退检讨书
2014/02/10 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
星级党支部申报材料
2014/05/31 职场文书
悬空寺导游词
2015/02/05 职场文书
Django实现聊天机器人
2021/05/31 Python
Django使用redis配置缓存的方法
2021/06/01 Redis