追踪算法KCF体验

article/2025/11/10 18:29:01

本文使用KCF的opencv版本实现。

对应论文:High-Speed Tracking with Kernelized Correlation Filters

编译环境:VS2015 + win7 64位


相关软件下载安装

需要下载opencv3.10,opencv_contrib和cmake-gui。

图:opencv下载说明


图:opencv_contrib下载说明


图:cmake下载说明


cmake下载的是免安装版本,解压缩之后打开cmake-gui就能直接运行。

将下载的3个文件安装/解压缩。

一.编译

打开bin目录下的cmake-gui.exe。

编译分为在x86和x64下2中编译方式,默认是使用x86编译。

1.      source code路径选择opencv3.1下的sources文件夹,build路径可以自己新建一个文件夹进行存放,如下图:



2.      打开Tool---Configure,如果想生成x86下的库,则选择Visual Studio 14 2015;如果想生成x64下的库,则选择Visual Studio 14 2015 Win64。然后点击Finish。如下图:


等待一段时间,软件会自动配置。

 

3.      配置完成后,找到OPENCV_EXTRA_MODULES_PATH,将opencv_contrib的目录放进去。如下图,我的opencv_contrib路径为D:/opencv/opencv_contrib-master/modules



4.      点击Generate,等待配置完成。


Visual Studio 2015编译

1.      找到之前新建的newBuild目录,打开新生成的OpenCV.sln。

2.      在解决方案资源管理器中,选中“解决方案‘OpenCV’”,右键-->重新生成解决方案。

3.      依旧是资源管理器中,找到CMakeTargets中的INSTALL,右键-->仅用于项目-->仅生成INSTALL。注:想要Debug版(格式为opencv_xxxx310d.lib)的和Release版(格式为opencv_xxxx310.lib)的lib的话,分别选择Debug和Release以后,生成两遍就可以了。完成后,D:/OpenCV3.1/sources/newBulid/install下会有很多东西。


配置VS2015

1.      新建win32控制台项目。




2.      新建cpp源文件。

3.      配置包含目录

我的是D:\opencv\opencv310\sources\newBulid\install\include

D:\opencv\opencv310\sources\newBulid\install\include\opencv

D:\opencv\opencv310\sources\newBulid\install\include\opencv2

如下图:



4.      配置库目录

我的是D:\opencv\opencv310\sources\newBulid\install\x86\vc14\lib

D:\opencv\opencv310\sources\newBulid\install\x86\vc14\staticlib

如下图:



5.      配置依赖项。

由于生成的依赖项太多,要是把每个lib一个一个写上去,很麻烦,有一种简便的方法,即,路径+*.lib,比如我的即为:

D:\opencv\opencv310\sources\newBulid\install\x86\vc14\lib\*.lib

D:\opencv\opencv310\sources\newBulid\install\x86\vc14\staticlib\*.lib

如下图



6.      以上是win32(x86)Debug配置方法,其他模式(x64、Release)配置方法类似。


测试KCF跟踪算法

在上面的工程中添加cpp源文件,并输入如下代码:

#include <opencv2/core/utility.hpp>
#include <opencv2/tracking.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <cstring>using namespace std;
using namespace cv;int main() {// declares all required variables//! [vars]Rect2d roi;Mat frame;//! [vars]// create a tracker objectPtr<Tracker> tracker = Tracker::create("KCF");//! [create]// set input video//! [setvideo]std::string video = "E:\\demo1.avi";VideoCapture cap(video);//! [setvideo]// get bounding box//! [getframe]cap >> frame;//! [getframe]//! [selectroi]选择目标roi以GUI的形式roi = selectROI("tracker", frame);//! [selectroi]//quit if ROI was not selectedif (roi.width == 0 || roi.height == 0)return 0;// initialize the tracker//! [init]tracker->init(frame, roi);//! [init]// perform the tracking processprintf("Start the tracking process\n");for (;; ) {// get frame from the videocap >> frame;// stop the program if no more imagesif (frame.rows == 0 || frame.cols == 0)break;// update the tracking result//! [update]tracker->update(frame, roi);//! [update]//! [visualization]// draw the tracked objectrectangle(frame, roi, Scalar(255, 0, 0), 2, 1);// show image with the tracked objectimshow("tracker", frame);//! [visualization]//quit on ESC buttonif (waitKey(1) == 27)break;}return 0;
}

注意:修改std::string video ="E:\\demo1.avi";这条语句中的视频路径即可。

    运行之后,首先框出物体,然后按下空格或者回车,系统便开始跟踪

最后效果如下图:








注:编译opencv比较麻烦,建议使用这个版本的KCF:https://github.com/hjl240/KCF-Tracking




http://chatgpt.dhexx.cn/article/4BgNhMhh.shtml

相关文章

单目标跟踪--KCF算法(核化相关滤波算法)Python实现(超详细)

Tracking-KCF Algorithm 注&#xff1a;本文涉及的算法的代码实践已上传至GitHub&#xff0c;恳求大佬们指点&#xff01;^ _ ^ 1. 目标检测跟踪与算法背景概述 ​ 目标跟踪任务在许多的计算机视觉系统中都是极为关键的一个组成部分。对于任意给定的一个初始图像的Patch&…

目标跟踪算法KCF原理详解

一直以来没有很想写这个&#xff0c;以为这个东西比较简单&#xff0c;还算是比较容易理解的一个算法&#xff0c;但是在知乎上回答过一个问题之后就有朋友私信我一些关于细节的东西&#xff0c;我一直以为关于细节的东西大家可以自己去理解&#xff0c;大家都是想快速了解这个…

KCF算法原理笔记

KCF算法全称是Kernelized Correlation Filters&#xff0c;是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins, and Jorge Batista提出来的跟踪算法&#xff0c;这个算法不论是在跟踪效果还是跟踪速度上都有十分亮眼的表现。该算法主要使用循环矩阵对样本进行采集&am…

目标跟踪算法——KCF入门详解

一直以来没有很想写这个&#xff0c;以为这个东西比较简单&#xff0c;还算是比较容易理解的一个算法&#xff0c;但是在知乎上回答过一个问题之后就有朋友私信我一些关于细节的东西&#xff0c;我一直以为关于细节的东西大家可以自己去理解&#xff0c;大家都是想快速了解这个…

【KCF算法解析】High-Speed Tracking with Kernelized Correlation Filters笔记

前段时间研究了一下KCF算法&#xff0c;单单看论文有很多看不懂的地方。查阅参考了&#xff0c;很多博客和其他材料才算了解了文章的大题思路&#xff0c;现将个人的理解在此记录&#xff0c;作为笔记。 主要内容 0.1 目标跟踪的背景介绍 0.2 学习该算法需先了解的预备知识 …

前端项目如何做测试?

前端项目也叫web端项目&#xff08;通俗讲就是网页上的功能&#xff09;是我们能够在屏幕上看到并产生交互的体验。 前端项目如何做测试&#xff1f; 要讲清楚这个问题&#xff0c;先需要你对测试流程现有一个全局的了解&#xff0c;先上一张测试流程图&#xff1a; 接下来下…

gt2e支持升级鸿蒙,鸿蒙测试版下月发布,Mate40或率先升级

鸿蒙系统终于要来了&#xff0c;Mate 40或成为率先升级的机型&#xff0c;12月中下旬将推出开发者测试版本&#xff0c;网友评论称终于等到你&#xff0c;国产操作系统终于要来了。 前一阵子余承东说鸿蒙系统将不会在今年推出&#xff0c;当时这个消息说实话让很多人感到失望&a…

gt2e鸿蒙系统,华为Watch GT2e评测:轻松开启年轻人一手掌控的百变运动潮酷生活...

【TechWeb】4月23日,华为nova7发布会上,华为Watch GT系列家族新成员——华为Watch GT 2e手表也正式发布。这款手表主要面向95后Z世代年轻人群体,定位运动潮流内核,潮流的外观造型和丰富的运动功能上吸引了不少年轻人关注的目光,同时也吸引了小编尝鲜的好奇之心。 潮酷外观…

vue_test_unit_e2e常见问题npm run unit单元测试和npm run e2e集成测试问题

vue项目要进行unit和e2e常见问题 localStorage is not available for opaque origins console.error node_modules\vue\dist\vue.runtime.common.dev.js 通常根据vue init webpack myproject 生成的项目&#xff0c;选择了unit和e2e模块后&#xff0c;都会有些问题。 1.首先是…

谈谈端到端测试(End-to-End Testing)

谈谈端到端测试&#xff08;End-to-End Testing&#xff09; 当今的软件系统是复杂的&#xff0c;并且与许多子系统相互关联。如果任何子系统出现故障&#xff0c;整个软件系统都可能崩溃。这是一个主要的风险&#xff0c;可以通过端到端测试来避免。 端到端测试是一种技术&a…

“汽车人”眼中的网络安全---关于AUTOSAR E2E及测试开发实践

1.前言 上篇文章“聊聊网络安全的5W1H”对网络安全知识体系和技术脉络做了深入浅出的介绍&#xff0c;提到AUTOSAR所定义的网络和通信安全相关的技术&#xff0c;本期我们将介绍其中的E2E策略&#xff08;严格来说属于Safety的范围&#xff09;&#xff0c;并分享在项目中的测…

【E2E】E2E通信保护协议学习1

文章目录 前言一、E2E简介和功能介绍1.E2E简介2.一些名词简写及其对应含义 二、一些功能规格1.通讯保护概述2.配置文档概述 总结 前言 在软件测试工作中&#xff0c;E2E是功能的一部分。 非E2E专业工程师&#xff0c;如果有哪里写的不对&#xff0c;请大家多多指正。 一、E2E简…

使用Nightwatch进行E2E测试

本文在线预览 E2E测试 不同于行为驱动测试&#xff08;BDD&#xff09;和单元测试独立运行并使用模拟/存根&#xff0c;端到端测试将试着尽可能从用户的视角&#xff0c;对真实系统的访问行为进行仿真。对Web应用来说&#xff0c;这意味着需要打开浏览器、加载页面、运行Java…

cypress进行e2e测试之理论

cypress 进行 e2e 测试之理论 cypress 是目前 e2e 很火的一个测试组件&#xff0c;内部绑定了 macha、chai、chai-jquery 之类的断言,为了让代码代码 更有说服力&#xff0c;减少提交测试错误&#xff0c;进行 e2e 测试显然是非常有必要的。 官网 GitHub 借鉴官网一句话来说…

自动化测试(二)01-前端测试分为单元测试、集成测试和E2E测试 测试工具对比-适合TDD或 BDD、断言、异步测试 测试工具的类型

自动化测试&#xff08;二&#xff09;01-前端测试分为单元测试、集成测试和E2E测试 & 测试工具对比-适合TDD或 BDD、断言、异步测试 & 测试工具的类型 前端自动化测试 测试是一个庞大的主题&#xff0c;包括各种分类的测试&#xff0c;诸如黑盒测试/白盒测试、单元测…

web前端测试——e2e测试

开发环境&#xff1a;安装有node的macbook&#xff08;windows没测&#xff09; 第一步&#xff1a; 创建自己需要测试的项目&#xff0c;如在桌面创建一个test目录作为我们的项目根目录。 打开sublim text &#xff0c;并将项目拖到sublim text中&#xff0c;方便管理。 第…

E2E 端到端测试学习 - E2E 介绍、Cypress 案例基本使用

E2E 测试介绍 E2E E2E&#xff08;end to end&#xff09;端到端测试是最直观可以理解的测试类型。在前端应用程序中&#xff0c;端到端测试可以从用户的视角通过真实浏览器自动检查应用程序是否正常工作。 E2E 把整个系统当作一个黑盒&#xff0c;测试人员模拟真实用户在浏…

Unity射线与UI碰撞检测

问题产生背景&#xff1a;我们有的时候&#xff0c;需要实现射线与3D UI之间的碰撞&#xff0c;当射线碰撞到3D UI之后&#xff08;将Canvas设置为World Space&#xff09;&#xff0c;调整到合适的位置。使用LineRender表示射线的直观显示&#xff0c;使用一把枪结合第一人称控…

unity中射线碰撞检测总结

这阵子通过看视频&#xff0c;看书对unity中射线碰撞检测&#xff0c;有了一些了解&#xff0c;这里我把它总结一下写下来&#xff0c;希望能帮助到你们&#xff0c;也希望通过各位大神来指正不足之处&#xff1b; 射线碰撞检测&#xff0c;就是由某一物体发射出一道射线&#…

Unity 射线与碰撞范围检测【踩坑记录】

射线检测 射线检测在2D和3D的区别比较大 一定要加上对应的Collider组件 对应的函数只检测对应的Collider&#xff0c;Physics.Raycast是不会检测到Collider 2D的&#xff08;这个让我有一次debug了好久才发现&#xff09; 对应API如下 Physics.Raycast(Vector3 origin,Vec…