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 bool attachCamera(const CameraDevice& obj)
virtual bool detachCamera(const CameraDevice& obj)
virtual bool start()
virtual bool stop()
virtual void loadTarget(const Target& obj, TargetLoadCallBack* callback = 0)
virtual bool loadTargetBlocked(const Target& obj)
virtual void unloadTarget(const Target& obj, TargetLoadCallBack* callback = 0)
virtual bool unloadTargetBlocked(const Target& obj)
virtual TargetList targets()
virtual bool setSimultaneousNum(int num) (since 1.3.0)
virtual int simultaneousNum() (since 1.3.0)

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。