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设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
利用python画一颗心的方法示例
Jan 31 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
详解django自定义中间件处理
Nov 21 Python
python实现矩阵打印
Mar 02 Python
python实现单链表的方法示例
Sep 03 Python
python3.7将代码打包成exe程序并添加图标的方法
Oct 11 Python
基于Python中random.sample()的替代方案
May 23 Python
Python生成随机验证码代码实例解析
Jun 09 Python
python try...finally...的实现方法
Nov 25 Python
Python如何使用循环结构和分支结构
Apr 13 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
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
php 获取全局变量的代码
2011/04/21 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
TBCompressor js代码压缩
2011/01/05 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
python和opencv实现抠图
2018/07/18 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
技能比赛获奖感言
2014/02/14 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
西式结婚主持词
2014/03/14 职场文书
品酒会策划方案
2014/05/26 职场文书
教师反邪教心得体会
2016/01/15 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
python blinker 信号库
2022/05/04 Python