这里写自定义目录标题
Opencv跟踪算法综合
本文主要实现opencv 自带跟踪算法多线程共同计算而产生最终的跟踪结果
(基于opencv342测试 opencv3 vs各版本下载地址: 链接: https://pan.baidu.com/s/1f5oAFqs-u15vkD5LNTcxtw 提取码: 2qj9)
多目标多线程更新的也发布了 地址:https://blog.youkuaiyun.com/weixin_37918890/article/details/107091504
结果示例:
代码:
#include <opencv2/opencv.hpp>
#include <opencv2/tracking.hpp>
#include <opencv2/core/ocl.hpp>
#include <thread>
using namespace cv;
using namespace std;
bool ok_BOOSTING =false;
bool ok_KCF = false;
bool ok_TLD = false;
bool ok_MEDIANFLOW = false;
bool ok_CSRT = false;
void BOOSTING_tracker(Ptr<Tracker>* tracker,Mat* frame, Rect2d *bbox) {
ok_BOOSTING = (*tracker)->update(*frame, *bbox);
}
void KCF_tracker(Ptr<Tracker>* tracker, Mat* frame, Rect2d* bbox) {
ok_KCF = (*tracker)->update(*frame, *bbox);
}
void TLD_tracker(Ptr<Tracker>* tracker, Mat* frame, Rect2d* bbox) {
ok_TLD = (*tracker)->update(*frame, *bbox);
}
void MEDIANFLOW_tracker(Ptr<Tracker>* tracker, Mat* frame, Rect2d* bbox) {
ok_MEDIANFLOW = (*tracker)->update(*frame, *bbox);
}
void CSRT_tracker(Ptr<Tracker>* tracker, Mat* frame, Rect2d* bbox) {
ok_CSRT = (*tracker)->update(*frame, *bbox);
}
int main(int argc, char** argv)
{
// List of tracker types in OpenCV 3.2
//初始化六个跟踪器
Ptr<Tracker> trackerBOOSTING;
trackerBOOSTING = TrackerBoosting::create();
Ptr<Tracker> trackerMIL;
trackerMIL = TrackerMIL::create();
Ptr<Tracker> trackerKCF;
trackerKCF = TrackerKCF::create();
Ptr<Tracker> trackerTLD;
trackerTLD = TrackerTLD::create();
Ptr<Tracker> trackerMEDIANFLOW;
trackerMEDIANFLOW = TrackerMedianFlow::create();
Ptr<Tracker> trackerCSRT