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正则表达式介绍
Aug 06 Python
Python运算符重载用法实例
May 28 Python
深入解析Python编程中super关键字的用法
Jun 24 Python
Python入门_学会创建并调用函数的方法
May 16 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
Random 在 Python 中的使用方法
Aug 09 Python
python通过tcp发送xml报文的方法
Dec 28 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
Python networkx包的实现
Feb 14 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 12 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
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
Python Tkinter基础控件用法
2014/09/03 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
python字典排序的方法
2019/10/12 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
数据员岗位职责
2013/11/19 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
对标管理实施方案
2014/03/12 职场文书
工作分析计划书
2014/04/30 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js