没有合适的资源?快使用搜索试试~ 我知道了~
首页opencv3/C++ 使用Tracker实现简单目标跟踪
资源详情
资源评论
资源推荐

opencv3/C++ 使用使用Tracker实现简单目标跟踪实现简单目标跟踪
今天小编就为大家分享一篇opencv3/C++ 使用Tracker实现简单目标跟踪,具有很好的参考价值,希望对大家有
所帮助。一起跟随小编过来看看吧
简介简介
MIL: TrackerMIL 以在线方式训练分类器将对象与背景分离;多实例学习避免鲁棒跟踪的漂移问题.
OLB: TrackerBoosting 基于AdaBoost算法的在线实时对象跟踪.分类器在更新步骤中使用周围背景作为反例以避免漂移问题.
MedianFlow: TrackerMedianFlow 跟踪器适用于非常平滑和可预测的运动,物体在整个序列中可见.
TLD: TrackerTLD 将长期跟踪任务分解为跟踪,学习和检测.跟踪器在帧之间跟踪对象.探测器本地化所观察到的所有外观,并在
必要时纠正跟踪器.学习估计检测器的错误并进行更新以避免再出现这些错误.追踪器能够处理快速运动,部分遮挡,物体缺失等情
况.
KCF: TrackerKCF 使用目标周围区域的循环矩阵采集正负样本,利用脊回归训练目标检测器,并成功的利用循环矩阵在傅里叶空
间可对角化的性质将矩阵的运算转化为向量的Hadamad积,即元素的点乘,大大降低了运算量,提高了运算速度,使算法满足实时
性要求.
部分相关部分相关API:
TrackerMIL
static Ptr<TrackerMIL> create(const TrackerMIL::Params ¶meters);
CV_WRAP static Ptr<TrackerMIL> create();
struct CV_EXPORTS Params
{
PARAMS();
//采样器的参数
float samplerInitInRadius; //初始收集正面实例的半径
int samplerInitMaxNegNum; //初始使用负样本
float samplerSearchWinSize; //搜索窗口的大小
float samplerTrackInRadius; //在跟踪期间收集正面实例的半径
int samplerTrackMaxPosNum; //在追踪期间使用正面样本
int samplerTrackMaxNegNum; //在跟踪期间使用的负样本
int featureSetNumFeatures; //特征
void read(const FileNode&fn);
void write(FileStorage&fs)const;
};
TrackerBoosting
static Ptr<TrackerBoosting> create(const TrackerBoosting::Params ¶meters);
CV_WRAP static Ptr<TrackerBoosting> create();
struct CV_EXPORTS Params
{
PARAMS();
int numClassifiers; //在OnlineBoosting算法中使用的分类器的数量
float samplerOverlap; //搜索区域参数
float samplerSearchFactor; //搜索区域参数
int iterationInit; //初始迭代
int featureSetNumFeatures; //特征
//从文件读取参数
void read(const FileNode&fn);
//从文件写入参数
void write(FileStorage&fs)const;
};
示例示例
首先获取视频的第一帧,通过点击左键框选选择要跟踪的目标,点击右键确认并使用MIL开始跟踪.(从实际情况看来,算法对过程中
有遮挡的情况跟踪能力较差.)
(环境:Ubuntu16.04+QT5.8+opencv3.3.1)
#include <opencv2/opencv.hpp>
#include <opencv2/video.hpp>
#include <opencv2/tracking.hpp>
#include <opencv2/tracking/tracker.hpp>
using namespace cv;














安全验证
文档复制为VIP权益,开通VIP直接复制

评论0