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脚本
Feb 10 Python
python提示No module named images的解决方法
Sep 29 Python
编写Python CGI脚本的教程
Jun 29 Python
Python实现简单字典树的方法
Apr 29 Python
基于Python的接口测试框架实例
Nov 04 Python
python 脚本生成随机 字母 + 数字密码功能
May 26 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
Django中的session用法详解
Mar 09 Python
python实现AdaBoost算法的示例
Oct 03 Python
python 中关于pycharm选择运行环境的问题
Oct 31 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
探讨方法的重写(覆载)详解
2013/06/08 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
使用javascipt---实现二分查找法
2013/04/10 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
python实现图像全景拼接
2020/03/27 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
大学专科求职信
2014/07/02 职场文书
同学聚会通知书
2015/04/20 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书