Opencv——目标跟踪Tracker,cmake编译后生成release模式的lib库

Opencv——目标跟踪Tracker
OpenCV有八种不同的目标追踪工具,他们都可以运用到计算机视觉领域中。
MIL Tracker:追踪器精确,但是失败率比较高。(最低支持OpenCV 3.0.0)

KCF Tracker:比BOOSTING和MIL都快,但是在有遮挡的情况下表现不佳。跟踪失败后无法再次准确跟踪目标。(最低支持OpenCV 3.1.0)

CSRT Tracker:比KCF稍精确,但速度不如后者。(最低支持OpenCV 3.4.2)

MedianFlow Tracker:在报错方面表现得很好,但是对于快速跳动或快速移动的物体,模型会失效,且跟踪框会不断增大。(最低支持OpenCV 3.0.0)

TLD Tracker:速度极慢,跟踪失败后无法再次准确跟踪目标。(最低支持OpenCV 3.0.0)

MOSSE Tracker:速度真心快,但是不如CSRT和KCF的准确率那么高,如果追求速度选它准没错。(最低支持OpenCV 3.4.1)

经过本人你的一番测试,发现与其他五种相比较CSRT Tracker这个跟踪效果最好,即使在遮挡的情况下,但是有一缺点就是处理速度慢,慢到你能很明显看出来是一帧一帧场景的播放。其他几个速度快的精度差,精度好的速度慢。

用到的函数:

返回值是rect,选区的坐标和大小

selectROI(const String& windowName,   //窗口的名字
			InputArray img,       //输入图片
			bool showCrosshair = true, //显示矩形
			bool fromCenter = false);  //选择矩形为初始位置。

cv::Ptr<cv::Tracker> tracker = cv::TrackerMIL::create();
cv::Ptr<cv::Tracker> tracker = cv::TrackerKCF::create();
cv::Ptr<cv::Tracker> tracker = cv::TrackerCSRT::create();
cv::Ptr<cv::Tracker> tracker = cv::TrackerMedianFlow::create();
cv::Ptr<cv::Tracker> tracker = cv::TrackerMOSSE::create();
cv::Ptr<cv::Tracker> tracker = cv::TrackerTLD::create();


tracker->init(InputArray image, const Rect2d& boundingBox);
tracker->update(InputArray image, CV_OUT Rect2d& boundingBox );

代码

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

using namespace std;
using namespace cv;

int main(int argc,char**argv)
{
	VideoCapture capture;
	capture.open("D:/balltest.mp4");
	if (!capture.isOpened())
	{
		cout << "coud not load video..." << endl;
		return -1;
	}
    
	namedWindow("input", WINDOW_AUTOSIZE);

	Ptr<Tracker> tracker = TrackerKCF::create();
	//Ptr<Tracker>tracker = Tracker::create("TLD");
	//Ptr<Tracker>tracker = Tracker::create("MEDIANFLOW");

	Mat frame;
	capture.read(frame);
	Rect2d roi = selectROI("input",frame);
	if (roi.width == 0 || roi.height == 0)
	{
		return -1;
	}

	tracker->init(frame, roi);
	while (capture.read(frame))
	{
		tracker->update(frame, roi);
		rectangle(frame, roi, Scalar(0, 0, 255), 2, 8, 0);
		imshow("input", frame);

		char c = waitKey(5);
		if (c == 27)
		{
			break;
		}
	}

	capture.release();
	waitKey(0);
	return 0;
}

生成release模式的lib库

跟踪方法在debug模式下,跑的非常慢,两帧之间得隔很长时间,在release模式下会增加运行速度,但是cmake编译后并没有生成release模式的lib库,所以采用以下方法生成release模式下的lib库,接下来就可以进行release的配置了。
打开cmake编译后的opencv工程
在这里插入图片描述
找到INSTALL,选择release编译
在这里插入图片描述
右键INSTALL 点击生成
在这里插入图片描述
然后等待 显示成功编译后,在v15/lib目录下查看。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值