在增强现实领域中,有许多优秀的开发工具包,ARToolKit就是其中一款优秀的增强现实开发工具包,它提供C/C++语言编写的函数库供开发者作增强现实应用程序开发,同时它又提供各种丰富的示例程序及源代码让开发者可以了解ARToolKit 的特性和开发过程。
我在前一段时间参与了一个基于ARToolKit的项目,发现国外有许多文档对ARToolKit进行了详细的介绍,但对其的中文介绍较少,不少都是直接翻译外国的文档。同时我在项目的开发过程中遇到了不少问题,而这些问题的解决方法很多都分布在论坛上,尚没有形成文档。因此我决定将我的一些开发过程记录下来,希望可以为其它开发者提供有用的信息。参考的网站包括:
1.ARToolKit的官方网站:http://www.hitl.washington.edu/artoolkit/
2.HIT实验室的论坛:http://www.hitlabnz.org/forum/forumdisplay.php?f=4(强烈推荐)
硬件选型
我在开发过程中遇到的第一个问题就是摄像头的选型。根据ARToolKit官网上的描述,摄像头或视频采集设备需要支持VFW或WDM驱动。检查的方法是运行amcap.exe,看devices中是否可以有该设备,同时是否可以通过此设备采集视频。
硬件选型解决方法:选择支持VFW或WDM驱动的设备,运行amcap.exe检查该设备是否支持这两种驱动。
硬件配置
支持VFW或WDM驱动的设备就可以作为ARToolIKit的采集设备,ARToolKit的示例程序可以默认打开这些设备进行视频采集。
若要开发自己的增强现实应用程序,需要对ARToolKit的视频采集做一定的配置。本文介绍Windows下的ARToolKit硬件配置。在ARToolKit 的示例程序中可以发现,程序一般都定义了如下的字符串:
char *vconf = "Data//WDM_camera_flipV.xml";
这个是程序打开视频设备时的设备配置文件。WDM_camera_flipV.xml文件中定义了视频采集设备的设备号和一些参数设置等。要采用指定的设备进行采集,需要自己在WDM_camera_flipV.xml中设置设备号。
以记事本方式打开WDM_camera_flipV.xml文件,会发现文件中有这么一行
<camera show_format_dialog="true" device_name="@device:pnp://?/pci#ven_1131&dev_7130&subsys_00001131&rev_01#5&1b69b2&0&6800f0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}/global" >
这一行定义的正是视频采集设备的设备号,只要将这一行的设备号设置为自己需要的视频采集设备,就可以在程序运行时打开对应的摄像头。
查找视频设备号可以通过软件GraphEdit实现,我以Pinnacle视频采集卡为例进行说明。下载GraphEdit并运行,Graph->Insert Filters,选择Video Capture Sources,会发现存在下面的说明。
device_name=@device:pnp://?/pci#ven_109e&dev_036e&subsys_1200bd11&rev_11#4&1c660dd6&0&08f0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}/global
这就是Pinnacle视频采集卡的设备号,它与WDM_camera_flipV.xml中的device_name设备说明类似,不同的仅是"&"被替换为"&"。只要将WDM_camera_flipV.xml中的device_name设置为这个设备号,就可以在ARToolKit中对Pinnalce视频采集卡进行视频采集。WDM_camera_flipV.xml设置如下,注意要将所有的"&"替换为"&":
<camera show_format_dialog="true" device_name="@device:pnp://?/pci#ven_109e&dev_036e&subsys_1200bd11&rev_11#4&1c660dd6&0&08f0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}/global" >
配置完毕后,ARToolKit就可以通过指定的视频采集设备进行视频采集。使用这种配置方法,ARToolKit可以使用支持VFW或WDM驱动的视频采集卡、USB摄像头或1394摄像头进行视频采集。
后记
WDM_camera_flipV.xml文件中还可以对格式调整对话框、视频采集帧率和分辨率等参数进行设置,详细可参考ARToolKit官网上的文档说明。
这是我第一篇Blog,原本想写一些心得体会之类的,后来还是写了这篇技术文档。ARToolKit是我在增强现实项目中使用的开发工具包,它的功能的确十分强大,我对ARToolKit也研究了一段时间,发现了不少问题,也解决了其中一些问题。我希望这篇Blog是一个好的开始,使我以后能继续坚持下去,将我在学习、项目中的体会记录下来,同时也希望能得到网上各位高手的指点。
aulzhb