ObjectTracker Class¶
Description¶
ObjectTracker实现了3D object target的检测和跟踪。ObjectTracker需要使用Pro许可证。
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¶
只在使用Pro许可证时返回true。
- C: bool easyar_ObjectTracker_isAvailable(void)¶
- C++17: static bool isAvailable()¶
- Traditional 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)¶
- Traditional C++: void feedbackFrameSink(FeedbackFrameSink * * Return)¶
- 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¶
(since 3.1.0)
当前组件占用camera buffer的数量。
- C: int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * This)¶
- C++17: int bufferRequirement()¶
- Traditional 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)¶
- Traditional C++: void outputFrameSource(OutputFrameSource * * Return)¶
- 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)¶
- Traditional C++: static void create(ObjectTracker * * Return)¶
- 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()¶
start¶
开始跟踪算法。
- C: bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)¶
- C++17: bool start()¶
- Traditional 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++17: void stop()¶
- Traditional 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++17: void close()¶
- Traditional 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)¶
- Traditional C++: void loadTarget(Target * target, CallbackScheduler * callbackScheduler, FunctorOfVoidFromTargetAndBool 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)¶
- Traditional C++: void unloadTarget(Target * target, CallbackScheduler * callbackScheduler, FunctorOfVoidFromTargetAndBool 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)¶
- Traditional C++: void targets(ListOfTarget * * Return)¶
- 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++17: bool setSimultaneousNum(int num)¶
- Traditional 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++17: int simultaneousNum()¶
- Traditional 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()¶