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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
日常整理python执行系统命令的常见方法(全)
Oct 22 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
python中for用来遍历range函数的方法
Jun 08 Python
Python创建字典的八种方式
Feb 27 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
Python colormap库的安装和使用详情
Oct 06 Python
Python基于Faker假数据构造库
Nov 30 Python
Pandas的数据过滤实现
Jan 15 Python
Python中zipfile压缩包模块的使用
May 14 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定时执行任务设置详解
2015/02/06 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python解析json实例方法
2013/11/19 Python
Ubuntu下安装PyV8
2016/03/13 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python 求定积分和不定积分示例
2019/11/20 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
Django如何使用redis作为缓存
2020/05/21 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
中职生自荐信
2013/10/13 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
初中生毕业评语
2014/12/29 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
室外天线与收音机天线杆接合方法
2022/04/05 无线电