基本概念

camshift("continuously adaptive mean-shift"的缩写),即连续自适应的 算法。其基本思想是对视频序列的所有图像帧都作MeanShift运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值,如此迭代下去。简单点说,meanShift是针对单张图片寻找最优迭代结果,而camShift则是针对视频序列来处理,并对该序列中的每一帧图片都调用meanShift来寻找最优迭代结果。正是由于camShift针对一个视频序列进行处理,从而保证其可以不断调整窗口的大小,如此一来,当目标的大小发生变化的时候,该算法就可以自适应地调整目标区域继续跟踪。算法基本步骤:

  1. 初始化搜索窗
  2. 计算搜索窗区域的颜色概率分布(反向投影)
  3. 运行mean-shift算法,得到搜索窗新的大小和位置。
  4. 在下一帧视频图像中用步骤3中的值重新初始化搜索窗的大小和位置,继续从步骤2执行。

示例演示

在OpenCV自带的camShift的例子当中,是通过计算目标在HSV空间下的H分量直方图,通过直方图反向投影得到目标像素的概率分布,然后通过调用OpenCV的CAMSHIFT算法,自动跟踪并调整目标窗口的中心位置与大小。该算法对于简单背景下的单目标跟踪效果较好,但如果被跟踪目标与背景颜色或周围其它目标颜色比较接近,则跟踪效果较差。另外,由于采用颜色特征,所以它对被跟踪目标的形状变化有一定的抵抗能力。

完整代码

#include <iostream>
#include <opencv2/opencv.hpp&

C++OpenCV基于Camshift实现颜色范围内的车辆跟踪相关推荐

  1. OpenCV基于颜色信息的车牌提取

    OpenCV基于颜色信息的车牌提取 车牌提取的方法主要有:基于纹理特征分析法.基于数学形态学分析法.基于边缘检测的定位分析法.基于小波分析的定位分析法.基于彩色信息的定位分析法,本文采用的方法是基于颜 ...

  2. C++ OpenCV 基于HSV颜色分割区域、获取目标

    C++ OpenCV 基于HSV颜色分割区域.获取目标 读取图片 // An highlighted block Mat img = imread("E:/Data_image/螺丝-线1/ ...

  3. opencv中直方图和颜色跟踪相关:calcHist, calcBackProject, Meanshift和Camshift

    1. 理解calcHist的应用 1)单通道hist calcHist比较好理解,就是计算 图像的直方图,单通道来说就是 灰度的分布 比如下图是灰度像素的分布,在0-255的灰度图上划分为若干个bin ...

  4. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  5. 【opencv】Camshift目标跟踪

    Camshift原理 CamShift算法的全称是"Continuously Adaptive Mean-SHIFT",即:连续自适应的MeanShift算法.其基本思想是对视频序 ...

  6. python更改图片中物体的颜色_Python Opencv提取图片中某种颜色组成的图形的方法...

    Python Opencv提取图片中某种颜色组成的图形的方法 主要目标识别图中红色的裂缝,尝试了几种不同的方法,最后发现比较每一点的RGB差值可以很好的解决这个问题,也就是提取图片中的红色相关信息.处 ...

  7. OpenCV(Python)颜色识别(一)

    1. 基本原理 1.1 彩色模型 数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型.而 ...

  8. 基于物体颜色的目标检测与跟踪

    目录 一.项目内容 二.项目分析 三.主要使用模块 四.选用HSV颜色空间 五.代码实现与分析 1. 颜色选择器: 2. 实现检测并跟踪绘制移动轨迹: 六.测试结果 一.项目内容 (1)利用摄像头,根 ...

  9. 基于HSI空间颜色三角形的边缘检测方法

    基于HSI空间颜色三角形的边缘检测方法 摘 要:利用像素点的颜色坐标H.S.I构建像素的颜色三角形,计算该三角形的面积和边长.根据面积以及边长的差值确定该像素点是否为彩色图像的边缘点.这种边缘检测方法 ...

最新文章

  1. 我以前一直没有真正理解支持向量机,直到我画了一张图!
  2. [PyTorch]一个非常好的抢救outofmemory的方法
  3. 高配人生背后:25岁前最该看透的事儿
  4. windows下的结束标志
  5. NO4 findmv--特殊符号..和.
  6. .NET、C#和ASP.NET三者之间的区别与联系
  7. dart参数传方法_Flutter必备Dart语言快速入门
  8. 想去三亚旅游,有什么好的景点推荐吗?
  9. java dom4j api_详解Java解析XML的四种方法(推荐使用DOM4J,因为for Java)
  10. MATLAB下载教程
  11. html新的页面打开新页面,javascript如何打开新窗口?
  12. MCMC抽样与LDA参数求解
  13. 双网卡双线路DNS解析分析
  14. php 360kan 抓取,米酷MKCMS自动采集360kan影视站6.2.6无授权版
  15. 德国华人餐饮外卖的春天?
  16. Linux rar 压缩 解压文件
  17. SQL SERVER学习记录
  18. linux 64位数据库下载地址,Linux 7 平台 64位 DM8(8.1.0.147) 安装文件下载地址
  19. Spring Boot CORS跨域资源共享实现方案
  20. 【BOOST C++字串专题11】Boost.Spirit(一)

热门文章

  1. Hr面的经验和反问怎么问
  2. 【阿朱标红】参与感(2):品牌篇
  3. Android--- 筛选框需求(1)房产类APP条件筛选框,包含区域(单选,多选),竖着排列(单选,多选),横向排列(单选,多选)
  4. java 渐变橡皮擦_java 的画板上面的一个橡皮檫功能
  5. 艾默生流量计的适用条件
  6. java int除以int_转:int整数除以int整数一定得到的是int整数(易忽视)
  7. 论文笔记:Deeply-Learned Part-Aligned Representations for Person Re-Identification
  8. mysql查询时不区分全半角_SQL查询语句区分大小写、全角半角
  9. 打造自己的Web IDE(在线开发环境)
  10. 全网最简单的最便宜的电子工资条发放方法