ObjectTracker Class

这个类型是C#语言的 EasyAR Sense API: ObjectTracker 。页面中部分描述可能与Unity环境无关。

这个类型已经部分封装进Unity组件: ObjectTrackerFrameFilter 。在大部分情况下不需要直接使用这个类型的成员和实例。如果要使用一些没有被封装的接口,需要使用 ObjectTrackerFrameFilter.Tracker ,而非创建新的实例。

Description

ObjectTracker实现了3D object target的检测和跟踪。

ObjectTracker占用(1 + SimultaneousNum)个camera的buffer。应使用camera的setBufferCapacity设置不少于所有组件占用的camera的buffer数量。参考 概览

创建之后,可以调用start/stop来开始和停止运行,start/stop是非常轻量的调用。

当不再需要该组件时,可以调用close对其进行关闭。close之后不应继续使用。

ObjectTracker通过feedbackFrameSink输入 FeedbackFrame ,应将 FeedbackFrameSource 连接到feedbackFrameSink上进行使用。参考 概览

Target 可以被ObjectTracker跟踪之前,你需要通过loadTarget/unloadTarget将它载入。可以通过传入接口的回调来获取load/unload的结果。


Methods

isAvailable

C#

public static bool isAvailable()

返回true。

feedbackFrameSink

C#

public virtual FeedbackFrameSink feedbackFrameSink()

FeedbackFrame 输入端口。FeedbackFrame中的InputFrame成员要求必须拥有图像、时间戳和camera参数,camera支持针孔和鱼眼相机。

bufferRequirement

C#

public virtual int bufferRequirement()

当前组件占用camera buffer的数量。

outputFrameSource

C#

public virtual OutputFrameSource outputFrameSource()

OutputFrame 输出端口。

create

C#

public static ObjectTracker create()

创建。

setResultPostProcessing

C#

public virtual void setResultPostProcessing(bool enablePersistentTargetInstance, bool enableMotionFusion)

设置结果后处理。

enablePersistentTargetInstance默认为false,开启时,如果 InputFrame 数据中包含空间信息,则 ImageTrackerResult 中的targetInstances会包含所有识别到的instance(包括当前未跟踪的)。

enableRtct默认为false,开启时,如果 InputFrame 数据中包含时间信息和空间信息,则 ImageTrackerResult 中的 targetInstances 的 pose 会使用 RealTimeCoordinateTransform 进行处理。

start

C#

public virtual bool start()

开始跟踪算法。

stop

C#

public virtual void stop()

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

close

C#

public virtual void close()

关闭。close之后不应继续使用。

loadTarget

C#

public virtual void loadTarget( Target target, CallbackScheduler callbackScheduler, Action< Target , bool> callback)

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

这个方法是异步方法。加载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受影响。如果你希望知道加载的结果,需要处理callback数据。callback将会在 CallbackScheduler 所指定的线程上被调用。跟踪线程和除了其它加载/卸载之外的操作都不会被阻塞。

unloadTarget

C#

public virtual void unloadTarget( Target target, CallbackScheduler callbackScheduler, Action< Target , bool> callback)

从tracker中卸载 Target

这个方法是异步方法。卸载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受影响。如果你希望知道卸载的结果,需要处理callback数据。callback将会在 CallbackScheduler 所指定的线程上被调用。跟踪线程和除了其它加载/卸载之外的操作都不会被阻塞。

targets

C#

public virtual List< Target > targets()

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

setSimultaneousNum

C#

public virtual bool setSimultaneousNum(int num)

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

simultaneousNum

C#

public virtual int simultaneousNum()

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