ImageTracker Class
Inherits:Base

Description

ImageTracker实现了target的检测和跟踪。

ImageTracker检测和跟踪ImageTarget。你需要首先调用AttachCameraCameraDevice连接至ImageTracker,然后CameraDevice的输出图像将被tracker使用。你可以通过Start/Stop来开始和停止跟踪。StartStop是非常轻量的调用。

在Target可以被ImageTracker跟踪之前,你需要通过异步方法LoadTarget/UnloadTarget或同步方法LoadTargetBlocked/UnloadTargetBlocked将它载入。如果你需要非阻塞的调用,推荐使用异步的接口。你可以在TargetLoad/TargetUnload事件中获取load/unload的结果。

你可以使用Augmenter.newFrame来获取一帧Frame。Frame中包含当前的camera图像和跟踪到的AugmentedTarget

Public Properties

List<Target>Targets
intSimultaneousNum (since 1.3.0)

Public Functions

ImageTracker()
boolAttachCamera(CameraDevice cam)
boolDetachCamera(CameraDevice cam)
boolStart()
boolStop()
voidLoadTarget(Target target)
boolLoadTargetBlocked(Target target)
voidUnloadTarget(Target target)
boolUnloadTargetBlocked(Target target)

Public Events

Action<ImageTracker, Target, bool>TargetLoad
Action<ImageTracker, Target, bool>TargetUnload

ImageTracker()

创建ImageTracker实例。

List<Target> Targets

当前已经被加载进入tracker的target。如果异步的加载/卸载正在执行,在加载/卸载完成之前的返回值将不会反应这些加载/卸载的结果。

int SimultaneousNum (since 1.3.0)

最大可被tracker跟踪的目标个数。默认值为1。

bool AttachCamera(CameraDevice cam)

将CameraDevice连接到ImageTracker。在有CameraDevice连接之前,ImageTracker不会开始运行跟踪。

bool DetachCamera(CameraDevice cam)

从ImageTracker断开CameraDevice的连接。在连接断开之后,ImageTracker将不会再从CameraDevice中获取图像,跟踪过程会在没有任何CameraDevice连接的时候停止。

bool Start()

开始跟踪算法。在有CameraDevice连接之前跟踪不会真正开始。

bool Stop()

停止跟踪算法。调用start来重新启动跟踪。

void LoadTarget(Target target)

加载一个Target进入tracker。Target只有在成功加载进入ImageTracker之后才能被识别和跟踪。

这个方法是异步方法。加载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受影响。加载的结果可以在TargetLoad事件中得到。

bool LoadTargetBlocked(Target target)

加载一个Target进入tracker。Target只有在成功加载进入ImageTracker之后才能被识别和跟踪。

这是个同步方法。加载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受影响。它会阻塞调用线程。但是跟踪线程以及camera线程等不会被阻塞。

void UnloadTarget(Target target)

从tracker中卸载Target

这个方法是异步方法。卸载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受影响。卸载的结果可以在TargetUnload事件中得到。

bool UnloadTargetBlocked(Target target)

从tracker中卸载Target

这是个同步方法。卸载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受影响。它会阻塞调用线程。但是跟踪线程以及camera线程等不会被阻塞。

event Action<ImageTracker, Target, bool> TargetLoad

target加载完成的事件。如果加载成功status为true否则为false。

event Action<ImageTracker, Target, bool> TargetUnload

target卸载完成的事件。如果卸载成功status为true否则为false。