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的几种标准输出重定向方式
Aug 15 Python
简单实现Python爬取网络图片
Apr 01 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
儿童编程python入门
May 08 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
python版本五子棋的实现代码
Dec 11 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
python实现微信防撤回神器
Apr 29 Python
Django项目中实现使用qq第三方登录功能
Aug 13 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
Python ORM框架Peewee用法详解
Apr 29 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
JS验证码实现代码
2017/09/14 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
Python图算法实例分析
2016/08/13 Python
python正则表达式re之compile函数解析
2017/10/25 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
科研课题实施方案
2014/03/18 职场文书
校运会口号
2014/06/18 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
2015感人爱情寄语
2015/02/26 职场文书
2015年实习单位评语
2015/03/25 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
合作意向书范本
2019/04/17 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
Python PIL按比例裁剪图片
2022/05/11 Python
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技