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使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 Python
python人人网登录应用实例
Sep 26 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python函数式编程
Jul 20 Python
Python内置函数 next的具体使用方法
Nov 24 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 Python
详解python3 + Scrapy爬虫学习之创建项目
Apr 12 Python
python3 xpath和requests应用详解
Mar 06 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 Python
使用python爬取抖音app视频的实例代码
Dec 01 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 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
深入了解php4(1)--回到未来
2006/10/09 PHP
程序员编程十条戒律
2009/07/09 PHP
php获取文件大小的方法
2014/02/26 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
php 可变函数使用小结
2018/06/12 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python yield 使用浅析
2015/05/28 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python图像读写方法对比
2020/11/16 Python
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
国际书籍零售商:Wordery
2017/11/01 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
面料业务员岗位职责
2013/12/26 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
元宵节主持词
2014/03/25 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书