camshift算法是对meanshift算法的改进,首先应用meanshift,一旦meanshift收敛,它就会更新窗口的大小,还计算最佳拟合椭圆的方向,从而根据目标的位置和大小更新搜索窗口。

camshift算法:可适应运动目标的大小形状的改变,具有较好的跟踪效果,但当背景色和目标颜色接近时,容易使目标的区域变大,最终有可能导致目标跟踪丢失。

import cv2 as cv
import numpy as np# 1.获取图像
cap = cv.VideoCapture('./1.mp4')# 2.获取第一帧图像,并指定目标位置
ret, frame = cap.read()# 2.1 目标位置(行,高,列,宽)
r, h, c, w = 197, 141, 0, 208
track_window = (c, r, w, h)# 2.2 指定目标的感兴趣区域
roi = frame[r:r+h, c:c+w]# 3. 计算直方图
# 3.1 转换色彩空间(HSV)
hsv_roi = cv.cvtColor(roi, cv.COLOR_BGR2HSV)# 3.2 去除低亮度的值
# mask = cv.inRange(hsv_roi, np.array((0., 60.,32.)), np.array((180.,255.,255.)))# 3.3 计算直方图
roi_hist = cv.calcHist([hsv_roi], [0], None, [180], [0, 180])# 3.4 归一化
cv.normalize(roi_hist, roi_hist, 0, 255, cv.NORM_MINMAX)# 4. 目标追踪
# 4.1 设置窗口搜索终止条件:最大迭代次数,窗口中心漂移最小值
term_crit = (cv.TERM_CRITERIA_EPS | cv.TERM_CRITERIA_COUNT, 10, 1)while(True):# 4.2 获取每一帧图像ret, frame = cap.read()if ret == True:# 4.3 计算直方图的反向投影hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)dst = cv.calcBackProject([hsv], [0], roi_hist, [0, 180], 1)# 4.4 进行camshift追踪ret, track_window = cv.CamShift(dst, track_window, term_crit)# 4.5 将追踪的位置绘制在视频上,并进行显示pts = cv.boxPoints(ret)pts = np.int0(pts)img2 = cv.polylines(frame, [pts], True, 255, 2)cv.imshow('frame', img2)if cv.waitKey(60) & 0xFF == ord('q'):breakelse:break# 5. 资源释放
cap.release()
cv.destroyAllWindows()

OpenCV camshift目标追踪相关推荐

  1. opencv多目标追踪容器

    opencv多目标追踪容器 之前做过一个多目标追踪的项目,尝试了一下opencv提供的追踪容器,个人感觉效果一般. # coding:utf-8 # @Time : 14/12/2018 17:07 ...

  2. 用opencv实现目标追踪的学习笔记——camshift

    小白的学习笔记--opencv camshift -基础:零c++基础,零opencv基础,简单C语言基础,略知数字图像处理知识 -工具:VS2015+opencv 2.4.13 -sample: E ...

  3. python—opencv 实时视频目标追踪

    功能: 1.获取摄像头,实时显示 2.鼠标获取第一帧中的目标roi区域 3.在视频中实时对目标进行追踪. 4.两种目标追踪的方式:'meanshift','camshift' 5.保存视频 impor ...

  4. 如何使用opencv进行目标追踪

    日常@尊师: © Fu Xianjun. All Rights Reserved. 使用opencv目标追踪之前先要在CDM中 安装pytesseract 代码是:pip install pytess ...

  5. OpenCV图像处理——目标追踪

    总目录 图像处理总目录←点击这里 二十四.目标追踪 24.1.多目标(手动检测)追踪 24.1.1.原理 目标检测:运行之后按下s,通过鼠标对某个目标进行检测,然后点击空格或者回车 目标追踪:open ...

  6. OpenCV meanshift目标追踪

    meanshift原理:一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束. Meanshift算法:简单,迭代次数少,但无法解决目 ...

  7. 【Opencv】目标追踪——高斯混合模型分离算法(MOG)

    文章目录 1 环境 2 效果 3 原理 4 代码 1 环境 Python 3.8.8 PyCharm 2021 opencv-python 2 效果 3 原理   视频图像中的目标检测与跟踪,是计算机 ...

  8. python机器识别追踪_多目标追踪器:用OpenCV实现多目标追踪(C++/Python)

    原标题:多目标追踪器:用OpenCV实现多目标追踪(C++/Python) MultiTracker : Multiple Object Tracking using OpenCV (C++/Pyth ...

  9. OpenCV—用meanshift和Camshift进行目标追踪

    学习目标 理解meanshift的原理 知道camshift算法 能够使用meanshift和Camshift进行目标追踪 1.meanshift 1.1原理 meanshift算法的原理很简单.假设 ...

最新文章

  1. android8显示广播,关于android8.0静态接收广播
  2. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子
  3. java token跨域,java 允许跨域
  4. todolist实现删除的功能_coc-todolist: nvim/vim 的 todolist/task 管理插件
  5. idea黑色好还是白色好_白色牛仔裤,好看又好搭
  6. 测试连接redis时报错redis.clients.jedis.exceptions.JedisConnectionException: Failed to create socket.
  7. LINQ简记(3):子句
  8. “4K”也有真假说法?历数那些年被忽悠的参数
  9. 商业模式画布模板——From 《商业模式新生代》
  10. 从事计算机专业的人职业道德,计算机专业技术人员职业道德建设研究
  11. top中的wa的理解
  12. ADSAD合辑(一)
  13. 龙讯3号 龙芯电脑即将店面销售
  14. 【转】如何设置服务器网卡千兆变万兆
  15. css所有缩写属性,CSS常见属性缩写与全写对比
  16. 上传文件时,文件名中文乱码
  17. 调查结果:您使用什么.NET Framework功能?
  18. 今15年创业,享受改变的过程
  19. 小班安全优质课教案《防止拥挤踩踏事故》
  20. 武汉理工大学c语言pta选择题答案,武汉理工理论考试pta判断题题库

热门文章

  1. DBA巡检常用的SQL语句
  2. 自定义Django的admin界面
  3. Microsoft Dynamics CRM 2015 数据管理 之 如何批量导入数据到 正式区(二)系统自带示例数据 安装及教学...
  4. 艾伟:重提URL Rewrite(3):在URL Rewrite后保持PostBack地址
  5. Service的理解和使用
  6. HTML DOM节点的增删改查
  7. 如何掌握并在实践中自如运用设计模式
  8. 小米面试:二叉搜索中第K小的元素
  9. http 400错误
  10. 在定义常量时,为什么推荐使用const,而不是#define?