图文详解OpenTLD平台的搭建

简介: <h1 style="text-align:center"><span style="white-space:pre">图文详解OpenTLD平台的搭建</span></h1> <p><span style="white-space:pre"></span>本文以图文的方式详解了OpenTLD平台的搭建。硬件平台:装有Windows 7/8/XP的电脑一台;软件平台:OpenTLD、Op

图文详解OpenTLD平台的搭建

本文以图文的方式详解了OpenTLD平台的搭建。硬件平台:装有Windows 7/8/XP的电脑一台;软件平台:OpenTLD、OpenCV、Visual Studio 2010。

1、软件下载

OpenTLD:https://github.com/arthurv/OpenTLD/tree/master

OpenCV:http://opencv.org/downloads.html

下载后如下图:


对OpenCV解压:双击=》点击Extract:



再对OpenTLD解压,解压后得到下图:


2、OpenCV用户变量和系统变量的设置

计算机=》属性=》高级系统设置:


高级=》环境变量:


首先设置用户变量:


(注意:x86代表你的电脑是32位系统,vc10代表你的平台是VS2010版本。)


再设置系统变量:

(注意:x86代表你的电脑是32位系统,vc10代表你的平台是VS2010版本。)


3、Visual Studio 2010工程的建立

打开软件=》New Project:


然后按下图设置:


点击OK后点击Next:


最后按照下图选择,最后点击Finish:


4、在VS中设置OpenCV

这是因为我们使用的OpenTLD要调用OpenCV库,这三步很重要,不可省略。

第一步单击项目属性(Properties)=》VC++ Directiories=》Include Directiories:

(把OpenCV的include加进去,如下图的第3步所示)


第二步单击项目属性(Properties)=》VC++ Directiories=》Library Directiories:

(把OpenCV的lib加进去,如下图的第3步所示)

第三步单击项目属性(Properties)=》Linker=》Input=》Additional Dependencies:

(把OpenCV的lib加进去,如下图的第4步所示)

需要注意的是:第三步中加载的lib与第二步加载的lib不是同一个东西。第二步加载的lib是路径,第三步加载的是该路径下的内容,如下图所示:(此处需要特别注意的是,在Release时加载的是下图中划线的那些,即xxx.lib,若是Debug模式,则加载xxxd.lib)。


5、将OpenTLD的头文件和源代码复制到VS当前工作目录

OpenTLD的头文件:


OpenTLD的源代码:


然后把它们加载到当前工程中:


6、修改OpenTLD的头文件

将四个头文件中的#include<  >都修改为#include" ":


在TLD.h中我们会发现PatchGenerator会出错,如下图:


这是因为原作者没有添加定义PatchGenerator类的头文件,我们把该头文件加上即可,如下图:


7、添加round函数

添加round函数,是因为VS中没有自带这个函数,而OpenTLD用到了这个函数。

第一步:在TLD.h中加入下面的代码:

int round(float f);
如下图所示:


第二步将下面代码加入TLD.cpp中,代码如下:

int TLD::round(float f)
{ 
	if ((int)f+0.5>f) 
		return (int)f; 
	else 
		return (int)f + 1; 
}
如下图所示:


8、将VS工程下的四个头文件复制到VS的安装路径

完成前7步,编译后我们发现找不到头文件,如下图所示:

解决方法就是将修改后OpenTLD头文件复制到VS的安装路径下,如下图:


9、ceil错误和floor错误的修改

完成第8步后相信你的工程可以编译,不过出现很多warning和几处errors,下面依次解决这些问题。

编译之后出现警告和错误提示如下:


第一步,ceil错误的解决:错误如下图:


解决方法如下图:


第二步,floor错误的解决,错误如下图:


解决方法如下图:


10、动态数组分配错误的解决方法

在TLD::clusterBB函数中,vs不支持这种动态数组分配,所以出现如下错误:


解决方法如下图,注释掉源代码中的分配动态数组的方法,把下面代码加进去:

	float *L = new float [c-1]; //Level
	int **nodes = new int *[c-1];
	for(int i = 0; i < 2 ;i ++)
		nodes[i] = new int [c-1];
	int *belongs = new int [c];
最后不要忘记释放分配的动态内存,加入如下代码,加入地方是该函数最后,即return 1前面,如下图:

	delete [] L;
	L = NULL;
	for (int i = 0; i < 2; ++i)
	{
		delete [] nodes[i];
		nodes[i] = NULL;
	}
	delete []nodes;
	nodes = NULL;
	delete [] belongs;
	belongs = NULL;
最后,编译成功。大功告成。

11、DEMO演示

首先将OpenTLD下的datasets文件夹和parameters.yml复制到当前工程目录下,如下图:


将datasets中的视频复制出来,以david为例,此时,david测试视频和parameters.yml都在当前工程的工作目录下了。

接着修改主函数中的代码,也就是如何让代码读取david测试视频,方法如下图所示:


编译运行,结果如下图:



大笑大笑大笑一切OK,亲~你的平台搭好了吗?大笑大笑大笑



目录
打赏
0
0
0
0
60
分享
相关文章
企业官网小程序搭建教程-首页的搭建05
企业官网小程序搭建教程-首页的搭建05
|
9月前
怎么使用零代码平台,在线搭建一套应用系统 — 敲敲云免费
怎么使用零代码平台,在线搭建一套应用系统 — 敲敲云免费
82 0
【平台开发】如何快速搭建一个网站
【平台开发】如何快速搭建一个网站
166 1
应用搭建必备-Liunx 基础
应用搭建必备-Liunx 基础
【国产开发神器】零代码搭建API接口开放/管理平台——YesApi
YesApi 接口大师,是一款国产企业级API接口管理平台,可以零代码、快速搭建API接口开发平台、接口开放平台、接口管理平台。基于PhalApi Pro 接口开发框架专业版软件,通过低代码可视化配置方式帮助企业快速搭建接口开放平台和管理API接口。 所以说:YesApi接口大师 = 接口低代码开发 + 接口零代码开放 + 接口零代码管理 + 接口计费
Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示
Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示
942 0
Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示
微信公众号开发:对接本地开发环境【内网穿透】
微信公众号开发:对接本地开发环境【内网穿透】
260 0
强烈推荐一款自研支持全平台的免费内网穿透工具:i996.me
强烈推荐一款自研支持全平台的免费内网穿透工具:i996.me
409 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等