ObjectTracker Class¶
Description¶
ObjectTracker implements 3D object target detection and tracking.
ObjectTracker occupies (1 + SimultaneousNum) buffers of camera. Use setBufferCapacity of camera to set an amount of buffers that is not less than the sum of amount of buffers occupied by all components. Refer to Overview .
After creation, you can call start/stop to enable/disable the track process. start and stop are very lightweight calls.
When the component is not needed anymore, call close function to close it. It shall not be used after calling close.
ObjectTracker inputs FeedbackFrame from feedbackFrameSink. FeedbackFrameSource shall be connected to feedbackFrameSink for use. Refer to Overview .
Before a Target can be tracked by ObjectTracker, you have to load it using loadTarget/unloadTarget. You can get load/unload results from callbacks passed into the interfaces.
isAvailable¶
Returns 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 input port. The InputFrame member of FeedbackFrame must have raw image, timestamp, and camera parameters. Both pinhole and fisheye camera are supported.
- 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 buffers occupied in this component.
- 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 output port.
- 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¶
Creates an instance.
- 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¶
Sets result post-processing.
enablePersistentTargetInstance defaults to false. When it is enabled and InputFrame contains spatial information, targetInstances in ImageTrackerResult will contain all recognized instances (with not tracking target instances).
enableMotionFusion defaults to false. When it is enabled and InputFrame contains temporal information and spatial information, pose of targetInstances in ImageTrackerResult will utilize 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)
setResultAsyncMode¶
Sets result async mode. Set true If results are to be outputted via outputFrameSource, false if results are to be fetched via getSyncResult. enableAsync defaults to true. Sync mode is only available with input frames including spatial information and with a XR license.
- C
bool easyar_ObjectTracker_setResultAsyncMode(easyar_ObjectTracker * This, bool enableAsync)
- C++
bool setResultAsyncMode(bool enableAsync)
- Java
public boolean setResultAsyncMode(boolean enableAsync)
- Kotlin
fun setResultAsyncMode(enableAsync: Boolean): Boolean
- Objective-C
- (bool)setResultAsyncMode:(bool)enableAsync
- Swift
public func setResultAsyncMode(_ enableAsync: Bool) -> Bool
- C#
public virtual bool setResultAsyncMode(bool enableAsync)
start¶
Starts the track algorithm.
- 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¶
Stops the track algorithm. Call start to start the track again.
- 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. The component shall not be used after calling 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¶
Load a Target into the tracker. A Target can only be tracked by tracker after a successful load.
This method is an asynchronous method. A load operation may take some time to finish and detection of a new/lost target may take more time during the load. The track time after detection will not be affected. If you want to know the load result, you have to handle the callback data. The callback will be called from the thread specified by CallbackScheduler . It will not block the track thread or any other operations except other load/unload.
- 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¶
Unload a Target from the tracker.
This method is an asynchronous method. An unload operation may take some time to finish and detection of a new/lost target may take more time during the unload. If you want to know the unload result, you have to handle the callback data. The callback will be called from the thread specified by CallbackScheduler . It will not block the track thread or any other operations except other load/unload.
- 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¶
Returns current loaded targets in the tracker. If an asynchronous load/unload is in progress, the returned value will not reflect the result until all load/unload finish.
- 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¶
Sets the max number of targets which will be the simultaneously tracked by the tracker. The default value is 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¶
Gets the max number of targets which will be the simultaneously tracked by the tracker. The default value is 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()
getSyncResult¶
Get synchronized result. If ObjectTracker is paused, or the result async mode is not set to false through setResultAsyncMode, the return value is empty.
- C
void easyar_ObjectTracker_getSyncResult(easyar_ObjectTracker * This, double timestamp, easyar_Matrix44F cameraTransform, easyar_MotionTrackingStatus trackingStatus, easyar_OptionalOfObjectTrackerResult * Return)
- C++
std::optional<std::shared_ptr<ObjectTrackerResult>> getSyncResult(double timestamp, Matrix44F cameraTransform, MotionTrackingStatus trackingStatus)
- Java
public @Nullable ObjectTrackerResult getSyncResult(double timestamp, @Nonnull Matrix44F cameraTransform, int trackingStatus)
- Kotlin
fun getSyncResult(timestamp: Double, cameraTransform: Matrix44F, trackingStatus: Int): ObjectTrackerResult?
- Objective-C
- (easyar_ObjectTrackerResult *)getSyncResult:(double)timestamp cameraTransform:(easyar_Matrix44F *)cameraTransform trackingStatus:(easyar_MotionTrackingStatus)trackingStatus
- Swift
public func getSyncResult(_ timestamp: Double, _ cameraTransform: Matrix44F, _ trackingStatus: MotionTrackingStatus) -> ObjectTrackerResult?
- C#
public virtual Optional<ObjectTrackerResult> getSyncResult(double timestamp, Matrix44F cameraTransform, MotionTrackingStatus trackingStatus)