KCF算法(C++实现)环境搭建与运行

1,654 阅读2分钟

获取代码

João F. Henriques (ox.ac.uk)

从作者博客取得论文代码等资源。我们需要的代码也将从这里寻找。

找到代码地址为:GitHub - joaofaro/KCFcpp: C++ Implementation of KCF Tracker

image-20210521183349048.png 点击地址右侧,复制git仓库地址。

在这里使用git来clone源代码,如果没有git首先需要安装git,这里以Ubuntu系统为例,使用apt来安装git

apt是一种软件包管理工具,可以理解为应用市场。

git是一款软件,所以我们可以尝试使用apt来安装。

当我们在Ubuntu系统中需要使用某款软件时,都可以尝试使用apt来进行安装。

搜索某款软件是否在apt中的方式是:

$ apt search <要搜索的软件名称>

ps:在脚本中,用尖括号括起来的一般是必选参数,也就是我们必须填写的参数。

$ sudo apt install git

image-20210521184254794.png

这样就算安装成功了。

接下来使用git来下载源代码。

$ git clone https://github.com/joaofaro/KCFcpp.git

PS:clone 是使用git从git仓库下载代码的方式。

image-20210521184647257.png

使用ls命令打印当前目录下所有文件时,可以看到新增的KCFcpp文件夹,这个就是刚刚clone到的源代码。

接下来使用cd命令进入KCF文件夹:

$ cd KCFcpp/

使用 ls -l 命令可以查看当前目录下文件及其详细信息。(可以在ls 后面加上目录来指定需要打印的目录,像我们这样省略时,就是打印当前目录下的文件)

ls 是打印给定目录下文件的命令,这里的 -l 是加给ls 的参数,意思是让ls 打印出文件名及其详细信息。类似的常用参数还有 -a ,加上该参数后,可以打印出包括隐藏文件在内的所有文件。

image-20210521184913633.png

编译程序

在Linux 下编译c++ 程序并不需要像在Windows 中一样,下载一个ide(比如dev c++)加载项目后点一下运行键,就可以执行代码了。像这样的开源代码,往往需要使用一些工具自行构建和编译。

在代码目录中,我们可以看到CMakeLists.txt,这说明该项目需要使用CMake 软件来进行配置和构建

首先需要安装CMake,这里使用apt进行安装:

$ sudo apt install cmake

安装好后,我们在代码目录下建立一个build 文件夹(新建文件夹需要使用mkdir命令,mkdir 的意思是make directory)。建好后,进入文件夹。

$ mkdir build
$ cd build

这里建立一个build 文件夹的目的是为了把构建和编译过程中生成的中间及结果文件与代码中其他文件隔开,因为CMake 的执行会生成一堆中间文件。

使用 cmake 进行项目构建

$ cmake ..

这条命令的意思是,使用当前目录的上一级目录中的 CMakeLists.txt 文件来对项目进行配置,配置后生成的文件输出在当前文件夹中。

image-20210521192414019.png

cmake在这里报错了,阅读错误信息可知,应该是由于缺少opencv库造成的。解决方案是尝试安装opencv开发依赖:用apt搜索关键字opencv

$ sudo apt search opencv

image-20210521192435655.png

翻一下列表,可以在里面找到 libopencv-dev,这个软件包就是opencv开发依赖

软件包命名规律:

  • lib开头,意味着这不是一款可以单独运行的软件,而是为其他软件运行提供支持的依赖库
  • 整个名字中间的 opencv 是这个软件包的主体名字
  • 结尾的 -dev 说明这个软件包是为开发用途使用的
$ sudo apt install libopencv-dev

对于软件包进行安装,执行上述代码。

image-20210521192659829.png

安装完成后,返回到代码编译目录的上一级,删掉build文件夹

$ rm -rf ./build

rm 命令用于删除文件或文件夹, -rf 实际上是 -r 和 -f 的组合简写,r 的意思是 recursive 即进行递归操作,用于删除文件夹及其内部所有文件; -f 的意思是force 即强制执行

接下来重新建立build 文件夹并进入执行cmake

image-20210521192619363.png

这次没有报错,项目配置完成,接下来开始进行编译

$ make

image-20210521201120293.png

编译报错了,经百度得知,是由于当前安装的opencv库中已经将CV_BGR2GRAY 改名为 COLOR_BGR2GRAY 导致的。类似的由于opencv版本问题导致的错误还有几处,均根据百度搜索到的答案进行修改后得以解决。

image-20210521202054666.png

将要追踪的图片、位置信息等都放入build文件夹,之后使用

$ ./KCF show

即可运行

image-20210521204108612.png