ImageTracker Class¶
这个类型是C#语言的 EasyAR Sense API: ImageTracker 。页面中部分描述可能与Unity环境无关。
这个类型已经部分封装进Unity组件: ImageTrackerFrameFilter 。在大部分情况下不需要直接使用这个类型的成员和实例。如果要使用一些没有被封装的接口,需要使用 ImageTrackerFrameFilter.Tracker ,而非创建新的实例。
Description¶
ImageTracker实现了平面卡片的检测和跟踪。
ImageTracker占用(1 + SimultaneousNum)个camera的buffer。应使用camera的setBufferCapacity设置不少于所有组件占用的camera的buffer数量。参考 概览 。
创建之后,可以调用start/stop来开始和停止运行,start/stop是非常轻量的调用。
当不再需要该组件时,可以调用close对其进行关闭。close之后不应继续使用。
ImageTracker通过feedbackFrameSink输入 FeedbackFrame ,应将 FeedbackFrameSource 连接到feedbackFrameSink上进行使用。参考 概览 。
在 Target 可以被ImageTracker跟踪之前,你需要通过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 ImageTracker create()
创建。默认的跟踪模式是 ImageTrackerMode .PreferQuality 。
createWithMode¶
- C#
public static ImageTracker createWithMode( ImageTrackerMode trackMode)
以特定跟踪模式创建。在低端手机上,可以使用 ImageTrackerMode .PreferPerformance 来获得更好的性能,但是跟踪效果会有些许损失。
createWithConfig¶
- C#
public static ImageTracker createWithConfig( ImageTrackerConfig config)
以特定配置创建。
setResultPostProcessing¶
- C#
public virtual void setResultPostProcessing(bool enablePersistentTargetInstance, bool enableMotionFusion)
设置结果后处理。
enablePersistentTargetInstance默认为false,开启时,如果 InputFrame 数据中包含空间信息,则 ImageTrackerResult 中的targetInstances会包含所有识别到的instance(包括当前未跟踪的)。
enableRtct默认为false,开启时,如果 InputFrame 数据中包含时间信息和空间信息,则 ImageTrackerResult 中的 targetInstances 的 pose 会使用 RealTimeCoordinateTransform 进行处理。
setResultAsyncMode¶
- C#
public virtual bool setResultAsyncMode(bool enableAsync)
设置结果异步模式。如果结果通过outputFrameSource输出,则应设置位true,如果结果通过getSyncResult获取,则应设置为false。默认enableAsync为true。同步模式仅在输入帧包含空间信息且使用XR License时可生效。
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。
getSyncResult¶
- C#
public virtual Optional< ImageTrackerResult > getSyncResult(double timestamp, Matrix44F cameraTransform, MotionTrackingStatus trackingStatus)
获得同步输出结果。如果ImageTracker已暂停,或者未通过setResultAsyncMode将结果异步模式设为false,则返回值为空。