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生成pdf文件的方法
Aug 04 Python
详解Python迭代和迭代器
Mar 28 Python
Python常用算法学习基础教程
Apr 13 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
python实现超简单的视频对象提取功能
Jun 04 Python
Python生成rsa密钥对操作示例
Apr 26 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
python爬虫爬取图片的简单代码
Jan 18 Python
Pycharm 如何设置HTML文件自动补全代码或标签
May 21 Python
pytorch 如何使用batch训练lstm网络
May 28 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
拖动一个HTML元素
2006/12/22 Javascript
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
Python中使用PIPE操作Linux管道
2015/02/04 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
Python3实现二叉树的最大深度
2019/09/30 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
物流专业求职计划书
2014/01/10 职场文书
质量月活动策划方案
2014/03/10 职场文书
个人银行贷款担保书
2014/04/01 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL