程序代码请参考百度网盘链接:
链接:https://pan.baidu.com/s/1mf89en0wneUr1TiBqZJC9A 提取码:kb6d
该程序是笔者一行一行敲出来的,但实际上其内容基本上与git上纯C++版本程序相似,只是对其中一些用不到的功能进行了简化。由于笔者在编程方面经验较少,所以代码工整度和注释规范性还有待提高,请大家多多包涵。尽管如此,还是希望大家耐心看下去,笔者相信通过我的程序也能使读者对TLD跟踪算法从理论上和编程实现上有一个比较全面清晰的认识。
- 程序中所包含的.cpp文件
其中
(1)源文件main为主体函数,主要包括读取视频内容、选择跟踪目标、逐帧跟踪且输出跟踪结果等模块,在main文件中主要调用了TLD类;
(2)FerNNClassifer类主要实现的是随机蕨分类算法,包括随机蕨的生成以及计算随机蕨下的后验概率;
(3)LKtracker类主要实现的是TLD算法的跟踪模块,即LK光流法;
(4)other_funs类主要实现的是跟踪程序中需要频繁调用的一些小的功能函数,包括在图像上绘制矩形(跟踪目标的框)、绘制点、求中间值等;
(5)PatchGenerator类主要实现的是对图像的一些基本变化,这是opencv2版本中的类,而opencv3版本中已经不存在直接实现仿射变换功能的函数,所以将opencv中源码搬运过来,在程序中主要实现图像块的仿射变换;
(6)TLD类主要实现的是对一帧图像进行跟踪,包含了TLD算法中包括跟踪、检测和学习模块的所有内容,是TLD算法学习中的重点内容。
程序主体以及各部分所包含的内容就介绍这里,下面就结合TLD算法理论和代码对每一部分内容进行详细的介绍,预知后事如何,且听下回分解!