ObjectTracker Class¶
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的结果。
isAvailable¶
返回true。
- C
- bool easyar_ObjectTracker_isAvailable(void) 
- C++
- static bool isAvailable() 
- Java
- public static boolean isAvailable() 
- Kotlin
- companion object fun isAvailable(): Boolean 
- Objective-C
- + (bool)isAvailable 
- Swift
- public static func isAvailable() -> Bool 
- C#
- public static bool isAvailable() 
feedbackFrameSink¶
FeedbackFrame 输入端口。FeedbackFrame中的InputFrame成员要求必须拥有图像、时间戳和camera参数。
- C
- void easyar_ObjectTracker_feedbackFrameSink(easyar_ObjectTracker * This, easyar_FeedbackFrameSink * * Return) 
- C++
- std::shared_ptr<FeedbackFrameSink> feedbackFrameSink() 
- Java
- public @Nonnull FeedbackFrameSink feedbackFrameSink() 
- Kotlin
- fun feedbackFrameSink(): FeedbackFrameSink 
- Objective-C
- - (easyar_FeedbackFrameSink *)feedbackFrameSink 
- Swift
- public func feedbackFrameSink() -> FeedbackFrameSink 
- C#
- public virtual FeedbackFrameSink feedbackFrameSink() 
bufferRequirement¶
当前组件占用camera buffer的数量。
- C
- int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * This) 
- C++
- int bufferRequirement() 
- Java
- public int bufferRequirement() 
- Kotlin
- fun bufferRequirement(): Int 
- Objective-C
- - (int)bufferRequirement 
- Swift
- public func bufferRequirement() -> Int32 
- C#
- public virtual int bufferRequirement() 
outputFrameSource¶
OutputFrame 输出端口。
- C
- void easyar_ObjectTracker_outputFrameSource(easyar_ObjectTracker * This, easyar_OutputFrameSource * * Return) 
- C++
- std::shared_ptr<OutputFrameSource> outputFrameSource() 
- Java
- public @Nonnull OutputFrameSource outputFrameSource() 
- Kotlin
- fun outputFrameSource(): OutputFrameSource 
- Objective-C
- - (easyar_OutputFrameSource *)outputFrameSource 
- Swift
- public func outputFrameSource() -> OutputFrameSource 
- C#
- public virtual OutputFrameSource outputFrameSource() 
create¶
创建。
- C
- void easyar_ObjectTracker_create(easyar_ObjectTracker * * Return) 
- C++
- static std::shared_ptr<ObjectTracker> create() 
- Java
- public static @Nonnull ObjectTracker create() 
- Kotlin
- companion object fun create(): ObjectTracker 
- Objective-C
- + (easyar_ObjectTracker *)create 
- Swift
- public static func create() -> ObjectTracker 
- C#
- public static ObjectTracker create() 
setResultPostProcessing¶
设置结果后处理。
enablePersistentTargetInstance默认为false,开启时,如果 InputFrame 数据中包含空间信息,则 ImageTrackerResult 中的targetInstances会包含所有识别到的instance(包括当前未跟踪的)。
enableRtct默认为false,开启时,如果 InputFrame 数据中包含时间信息和空间信息,则 ImageTrackerResult 中的 targetInstances 的 pose 会使用 RealTimeCoordinateTransform 进行处理。
- C
- void easyar_ObjectTracker_setResultPostProcessing(easyar_ObjectTracker * This, bool enablePersistentTargetInstance, bool enableMotionFusion) 
- C++
- void setResultPostProcessing(bool enablePersistentTargetInstance, bool enableMotionFusion) 
- Java
- public void setResultPostProcessing(boolean enablePersistentTargetInstance, boolean enableMotionFusion) 
- Kotlin
- fun setResultPostProcessing(enablePersistentTargetInstance: Boolean, enableMotionFusion: Boolean): Unit 
- Objective-C
- - (void)setResultPostProcessing:(bool)enablePersistentTargetInstance enableMotionFusion:(bool)enableMotionFusion 
- Swift
- public func setResultPostProcessing(_ enablePersistentTargetInstance: Bool, _ enableMotionFusion: Bool) -> Void 
- C#
- public virtual void setResultPostProcessing(bool enablePersistentTargetInstance, bool enableMotionFusion) 
start¶
开始跟踪算法。
- C
- bool easyar_ObjectTracker_start(easyar_ObjectTracker * This) 
- C++
- bool start() 
- Java
- public boolean start() 
- Kotlin
- fun start(): Boolean 
- Objective-C
- - (bool)start 
- Swift
- public func start() -> Bool 
- C#
- public virtual bool start() 
stop¶
暂停跟踪算法。调用start来重新启动跟踪。
- C
- void easyar_ObjectTracker_stop(easyar_ObjectTracker * This) 
- C++
- void stop() 
- Java
- public void stop() 
- Kotlin
- fun stop(): Unit 
- Objective-C
- - (void)stop 
- Swift
- public func stop() -> Void 
- C#
- public virtual void stop() 
close¶
关闭。close之后不应继续使用。
- C
- void easyar_ObjectTracker_close(easyar_ObjectTracker * This) 
- C++
- void close() 
- Java
- public void close() 
- Kotlin
- fun close(): Unit 
- Objective-C
- - (void)close 
- Swift
- public func close() -> Void 
- C#
- public virtual void close() 
loadTarget¶
加载一个 Target 进入tracker。 Target 只有在成功加载进入tracker之后才能被识别和跟踪。
这个方法是异步方法。加载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受影响。如果你希望知道加载的结果,需要处理callback数据。callback将会在 CallbackScheduler 所指定的线程上被调用。跟踪线程和除了其它加载/卸载之外的操作都不会被阻塞。
- C
- void easyar_ObjectTracker_loadTarget(easyar_ObjectTracker * This, easyar_Target * target, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromTargetAndBool callback) 
- C++
- void loadTarget(std::shared_ptr<Target> target, std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<Target>, bool)> callback) 
- Java
- public void loadTarget(@Nonnull Target target, @Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromTargetAndBool callback) 
- Kotlin
- fun loadTarget(target: Target, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromTargetAndBool): Unit 
- Objective-C
- - (void)loadTarget:(easyar_Target *)target callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_Target * target, bool status))callback 
- Swift
- public func loadTarget(_ target: Target, _ callbackScheduler: CallbackScheduler, _ callback: @escaping (Target, Bool) -> Void) -> Void 
- C#
- public virtual void loadTarget(Target target, CallbackScheduler callbackScheduler, Action<Target, bool> callback) 
unloadTarget¶
从tracker中卸载 Target 。
这个方法是异步方法。卸载过程可能会需要一些时间来完成,这段时间内新的和丢失的target的检测可能会花比平时更多的时间,但是检测到之后的跟踪不受影响。如果你希望知道卸载的结果,需要处理callback数据。callback将会在 CallbackScheduler 所指定的线程上被调用。跟踪线程和除了其它加载/卸载之外的操作都不会被阻塞。
- C
- void easyar_ObjectTracker_unloadTarget(easyar_ObjectTracker * This, easyar_Target * target, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromTargetAndBool callback) 
- C++
- void unloadTarget(std::shared_ptr<Target> target, std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<Target>, bool)> callback) 
- Java
- public void unloadTarget(@Nonnull Target target, @Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromTargetAndBool callback) 
- Kotlin
- fun unloadTarget(target: Target, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromTargetAndBool): Unit 
- Objective-C
- - (void)unloadTarget:(easyar_Target *)target callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_Target * target, bool status))callback 
- Swift
- public func unloadTarget(_ target: Target, _ callbackScheduler: CallbackScheduler, _ callback: @escaping (Target, Bool) -> Void) -> Void 
- C#
- public virtual void unloadTarget(Target target, CallbackScheduler callbackScheduler, Action<Target, bool> callback) 
targets¶
返回当前已经被加载进入tracker的target。如果异步的加载/卸载正在执行,在加载/卸载完成之前的返回值将不会反映这些加载/卸载的结果。
- C
- void easyar_ObjectTracker_targets(const easyar_ObjectTracker * This, easyar_ListOfTarget * * Return) 
- C++
- std::vector<std::shared_ptr<Target>> targets() 
- Java
- public java.util.@Nonnull ArrayList<@Nonnull Target> targets() 
- Kotlin
- fun targets(): ArrayList<Target> 
- Objective-C
- - (NSArray<easyar_Target *> *)targets 
- Swift
- public func targets() -> [Target] 
- C#
- public virtual List<Target> targets() 
setSimultaneousNum¶
设置最大可被tracker跟踪的目标个数。默认值为1。
- C
- bool easyar_ObjectTracker_setSimultaneousNum(easyar_ObjectTracker * This, int num) 
- C++
- bool setSimultaneousNum(int num) 
- Java
- public boolean setSimultaneousNum(int num) 
- Kotlin
- fun setSimultaneousNum(num: Int): Boolean 
- Objective-C
- - (bool)setSimultaneousNum:(int)num 
- Swift
- public func setSimultaneousNum(_ num: Int32) -> Bool 
- C#
- public virtual bool setSimultaneousNum(int num) 
simultaneousNum¶
获取最大可被tracker跟踪的目标个数。默认值为1。
- C
- int easyar_ObjectTracker_simultaneousNum(const easyar_ObjectTracker * This) 
- C++
- int simultaneousNum() 
- Java
- public int simultaneousNum() 
- Kotlin
- fun simultaneousNum(): Int 
- Objective-C
- - (int)simultaneousNum 
- Swift
- public func simultaneousNum() -> Int32 
- C#
- public virtual int simultaneousNum()