ImageTracker Class¶
Header: #include "easyar/tracker.hpp" (until 1.2.1)
Header: #include "easyar/imagetracker.hpp" (since 1.3.0)
Inherits: RefBase
Description¶
ImageTracker实现了target的检测和跟踪。
ImageTracker检测和跟踪 ImageTarget 。你需要首先调用attachCamera将 CameraDevice 连接至 ImageTracker,然后CameraDevice的输出图像将被tracker使用。你可以通过start/stop来开始和停止跟踪。st art和stop是非常轻量的调用。
在Target可以被ImageTracker跟踪之前,你需要通过异步方法loadTarget/unloadTarget或同步方法loadTa rgetBlocked/unloadTargetBlocked将它载入。如果需要非阻塞的调用,推荐使用异步的接口。可以通过传入接口的 TargetLoadCallBack 来获取load/unload的结果。
可以使用 Augmenter::newFrame 来获取一帧 Frame 。Frame中包含当前的camera图像和跟踪到的 AugmentedTarget 。
Public Functions¶
ImageTracker()¶
创建ImageTracker实例。
virtual ~ImageTracker()¶
销毁ImageTracker实例。
virtual bool attachCamera(const CameraDevice& obj)¶
将CameraDevice连接到ImageTracker。在有CameraDevice连接之前,ImageTracker不会开始运行跟踪。
virtual bool detachCamera(const CameraDevice& obj)¶
从ImageTracker断开CameraDevice的连接。在连接断开之后,ImageTracker将不会再从CameraDevice中获 取图像,跟踪过程会在没有任何CameraDevice连接的时候停止。
virtual bool start()¶
开始跟踪算法。在有CameraDevice连接之前跟踪不会真正开始。
virtual bool stop()¶
停止跟踪算法。调用start来重新启动跟踪。
virtual void loadTarget(const Target& obj, TargetLoadCallBack* callback = 0)¶
加载一个 Target 进入tracker。Target只有在成功加载进入ImageTracker之后才能被识别和跟踪。
这个方法是异步方法。加载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪 不受影响。如果你希望知道加载的结果,需要提供一个非null的 callback 。callback将会在其它线程上被调用。跟踪线程和除了其它加载/卸载之外的操作都不会被阻塞。
virtual bool loadTargetBlocked(const Target& obj)¶
加载一个 Target 进入tracker。Target只有在成功加载进入ImageTracker之后才能被识别和跟踪。
这是个同步方法。加载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受 影响。它会阻塞调用线程。但是跟踪线程以及camera线程等不会被阻塞。
virtual void unloadTarget(const Target& obj, TargetLoadCallBack* callback = 0)¶
从tracker中卸载 Target 。
这个方法是异步方法。卸载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪 不受影响。如果你希望知道卸载的结果,需要提供一个非null的 callback 。callback将会在其它线程上被调用。跟踪线程和除了其它加载/卸载之外的操作都不会被阻塞。
virtual bool unloadTargetBlocked(const Target& obj)¶
从tracker中卸载 Target 。
这是个同步方法。卸载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受 影响。它会阻塞调用线程。但是跟踪线程以及camera线程等不会被阻塞。
virtual TargetList targets()¶
返回当前已经被加载进入tracker的target。如果异步的加载/卸载正在执行,在加载/卸载完成之前的返回值将不会反应这些加载/卸载的结果 。
virtual bool setSimultaneousNum(int num) (since 1.3.0)¶
设置最大可被tracker跟踪的目标个数。默认值为1。
virtual int simultaneousNum() (since 1.3.0)¶
获取最大可被tracker跟踪的目标个数。默认值为1。