2019-1-30
【零基础学习ARToolkit系列之四】跟踪稳定性
前面几节,我们看了怎样创建一个简单的ARToolkit程序,今天我们介绍ARToolkit的一个重要特点:历史函数
在bin目录下找到simpleTest2程序运行,可以看到与图1相似的抓图,图2是键盘每次输入’c’之后的变化截图
图1
图2
分析ARtooklit里面的simple2这个程序一些不同于simpletest的地方,如下图
在开头,添加了一个标识位,int mode=1;在这篇代码在simpletest的基础上在键盘响应事件里面添加了如果用键盘输入字母C的响应事件,这里的意思是如果输入c,使用arGetTransMatCout函数,或者选择arGetTransMat求转换矩阵,此时mode为0,这里的mode由整型强制转换为布尔类型,此处为布尔类型即为假则在控制台输出"Continuous mode: Using arGetTransMatCont.\n",如果mode为1,则输出"One shot mode: Using arGetTransMat.\n"。
关于arGetTransMatCont函数和arGetTransMat函数
相同点:arGetTransMat()和arGetTransMatCont()都是计算相机位置和检测到的标识之间的转换矩阵(重要的是函数里面的内容&marker_info[k], patt_center, patt_width, patt_trans这些)。
不同点:arGetTransMatCont()使方块看起来很稳定,这是因为,我们使用了历史函数,使用历史信息会降低精确度,但是提供了更为稳定的图像,速度稍快些,
arGetTransMat()函数下,精确度高,但是方块像是有点微微的抖动,不稳定。