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之引用和类属性的初步理解
May 15 Python
Python装饰器的函数式编程详解
Feb 27 Python
在Django中创建第一个静态视图
Jul 15 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
Python面向对象程序设计示例小结
Jan 30 Python
python 消费 kafka 数据教程
Dec 21 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
python判断元素是否存在的实例方法
Sep 24 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
模仿OSO的论坛(三)
2006/10/09 PHP
Javascript delete 引用类型对象
2013/11/01 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
easyui validatebox验证
2016/04/29 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
JS实现碰撞检测的方法分析
2018/01/19 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
python 求定积分和不定积分示例
2019/11/20 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
Django model class Meta原理解析
2020/11/14 Python
python中time.ctime()实例用法
2021/02/03 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
C有"按引用传递"吗
2016/09/06 面试题
《美丽的黄昏》教学反思
2014/02/28 职场文书
作文评语大全
2014/04/23 职场文书
服务承诺书格式
2014/05/21 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
二年级数学教学反思
2016/02/16 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
代码复现python目标检测yolo3详解预测
2022/05/06 Python