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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
Python中运行并行任务技巧
Feb 26 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
详解python中的模块及包导入
Aug 30 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
Pycharm中配置远程Docker运行环境的教程图解
Jun 11 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
详解matplotlib绘图样式(style)初探
Feb 03 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
php &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
Python读写文件基础知识点
2019/06/10 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
教师绩效考核方案
2014/01/21 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
中学生寄语大全
2014/04/03 职场文书
请假条标准格式规范
2014/04/10 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
中小学生学籍证明
2014/10/25 职场文书
《检阅》教学反思
2016/02/22 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
Python加密与解密模块hashlib与hmac
2022/06/05 Python
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技