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中的多进程与多线程的使用
Apr 07 Python
使用Python对SQLite数据库操作
Apr 06 Python
Python 列表理解及使用方法
Oct 27 Python
python清理子进程机制剖析
Nov 23 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
python将数组n等分的实例
Dec 02 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 Python
Python中如何引入第三方模块
May 27 Python
如何用python绘制雷达图
Apr 24 Python
Python&Matlab实现灰狼优化算法的示例代码
Mar 21 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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
构建简单的Webmail系统
2006/10/09 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
理解Python垃圾回收机制
2016/02/12 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
应用心理学个人求职信范文
2013/12/11 职场文书
4s店总经理岗位职责
2013/12/31 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
介绍信怎么写
2015/01/30 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
爱国主义主题班会
2015/08/14 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫