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装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
django 将model转换为字典的方法示例
Oct 16 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python docx库用法示例分析
Feb 16 Python
详解python-图像处理(映射变换)
Mar 22 Python
python列表推导式入门学习解析
Dec 02 Python
为什么说python适合写爬虫
Jun 11 Python
基于python实现图片转字符画代码实例
Sep 04 Python
Python机器学习三大件之一numpy
May 10 Python
Anaconda配置各版本Pytorch的实现
Aug 07 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世纪万年历
2006/12/06 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
让你的网站可编辑的实现js代码
2009/10/19 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
js判断密码强度的方法
2020/03/18 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
Python阶乘求和的代码详解
2020/02/14 Python
python_mask_array的用法
2020/02/18 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
先进个人评语大全
2015/01/04 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
大学生干部培训心得体会
2016/01/06 职场文书