Python+OpenCV目标跟踪实现基本的运动检测


Posted in Python onJuly 10, 2018

目标跟踪是对摄像头视频中的移动目标进行定位的过程,有着非常广泛的应用。实时目标跟踪是许多计算机视觉应用的重要任务,如监控、基于感知的用户界面、增强现实、基于对象的视频压缩以及辅助驾驶等。

有很多实现视频目标跟踪的方法,当跟踪所有移动目标时,帧之间的差异会变的有用;当跟踪视频中移动的手时,基于皮肤颜色的均值漂移方法是最好的解决方案;当知道跟踪对象的一方面时,模板匹配是不错的技术。

本文代码是做一个基本的运动检测

考虑的是“背景帧”与其它帧之间的差异

这种方法检测结果还是挺不错的,但是需要提前设置背景帧,如果是在室外,光线的变化就会引起误检测,还是很有局限性的。

Python+OpenCV目标跟踪实现基本的运动检测

import cv2
import numpy as np

camera = cv2.VideoCapture(0) # 参数0表示第一个摄像头
# 判断视频是否打开
if (camera.isOpened()):
  print('Open')
else:
  print('摄像头未打开')

# 测试用,查看视频size
size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)),
    int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print('size:'+repr(size))

es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))
kernel = np.ones((5, 5), np.uint8)
background = None

while True:
  # 读取视频流
  grabbed, frame_lwpCV = camera.read()
  # 对帧进行预处理,先转灰度图,再进行高斯滤波。
  # 用高斯滤波进行模糊处理,进行处理的原因:每个输入的视频都会因自然震动、光照变化或者摄像头本身等原因而产生噪声。对噪声进行平滑是为了避免在运动和跟踪时将其检测出来。
  gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY)
  gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0)

  # 将第一帧设置为整个输入的背景
  if background is None:
    background = gray_lwpCV
    continue
  # 对于每个从背景之后读取的帧都会计算其与北京之间的差异,并得到一个差分图(different map)。
  # 还需要应用阈值来得到一幅黑白图像,并通过下面代码来膨胀(dilate)图像,从而对孔(hole)和缺陷(imperfection)进行归一化处理
  diff = cv2.absdiff(background, gray_lwpCV)
  diff = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1] # 二值化阈值处理
  diff = cv2.dilate(diff, es, iterations=2) # 形态学膨胀

  # 显示矩形框
  image, contours, hierarchy = cv2.findContours(diff.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 该函数计算一幅图像中目标的轮廓
  for c in contours:
    if cv2.contourArea(c) < 1500: # 对于矩形区域,只显示大于给定阈值的轮廓,所以一些微小的变化不会显示。对于光照不变和噪声低的摄像头可不设定轮廓最小尺寸的阈值
      continue
    (x, y, w, h) = cv2.boundingRect(c) # 该函数计算矩形的边界框
    cv2.rectangle(frame_lwpCV, (x, y), (x+w, y+h), (0, 255, 0), 2)

  cv2.imshow('contours', frame_lwpCV)
  cv2.imshow('dis', diff)

  key = cv2.waitKey(1) & 0xFF
  # 按'q'健退出循环
  if key == ord('q'):
    break
# When everything done, release the capture
camera.release()
cv2.destroyAllWindows()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现在目录中查找指定文件的方法
Nov 11 Python
Python正规则表达式学习指南
Aug 02 Python
请不要重复犯我在学习Python和Linux系统上的错误
Dec 12 Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
Python装饰器的执行过程实例分析
Jun 04 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
python gdal安装与简单使用
Aug 01 Python
python实现静态web服务器
Sep 03 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
如何判断pytorch是否支持GPU加速
Jun 01 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 #Python
python读取excel指定列数据并写入到新的excel方法
Jul 10 #Python
python 常用的基础函数
Jul 10 #Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 #Python
python opencv实现运动检测
Jul 10 #Python
python中单下划线_的常见用法总结
Jul 10 #Python
浅谈dataframe中更改列属性的方法
Jul 10 #Python
You might like
php强制下载文件函数
2016/08/24 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
HTML的select控件美化
2017/03/27 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
Python入门教程之运算符与控制流
2016/08/17 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
什么是Python包的循环导入
2020/09/08 Python
用 python 进行微信好友信息分析
2020/11/28 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
物流毕业生个人的自我评价
2014/02/13 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
小学生作文评语大全
2014/04/21 职场文书