Class ObjectTracker
ObjectTracker implements detection and tracking of 3D object targets. ObjectTracker occupies (1 + SimultaneousNum) camera buffers. camera setBufferCapacity should be used to set no fewer than the number of camera buffers occupied by all components. After creation, start/stop can be called to start and stop running. start/stop are very lightweight calls. When the component is no longer needed, close can be called to close it. It should not be used after close. ObjectTracker inputs FeedbackFrame through feedbackFrameSink, and FeedbackFrameSource should be connected to feedbackFrameSink for use. Before a Target can be tracked by ObjectTracker, you need to load it through loadTarget/unloadTarget. The load/unload result can be obtained through callbacks passed into the interface.
ObjectTracker
Methods
isAvailable
bool easyar_ObjectTracker_isAvailable(void)
static bool isAvailable()
public static boolean isAvailable()
companion object fun isAvailable(): Boolean
public static func isAvailable() -> Bool
public static bool isAvailable()
Returns
feedbackFrameSink
FeedbackFrame input port. The InputFrame member in FeedbackFrame must have image, timestamp, and camera parameters. camera supports pinhole and fisheye cameras.
void easyar_ObjectTracker_feedbackFrameSink(easyar_ObjectTracker * This, easyar_FeedbackFrameSink * * Return)
std::shared_ptr<FeedbackFrameSink> feedbackFrameSink()
public @Nonnull FeedbackFrameSink feedbackFrameSink()
fun feedbackFrameSink(): FeedbackFrameSink
- (easyar_FeedbackFrameSink *)feedbackFrameSink
public func feedbackFrameSink() -> FeedbackFrameSink
public virtual FeedbackFrameSink feedbackFrameSink()
Returns
bufferRequirement
Number of camera buffers occupied by the current component.
int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
Returns
outputFrameSource
void easyar_ObjectTracker_outputFrameSource(easyar_ObjectTracker * This, easyar_OutputFrameSource * * Return)
std::shared_ptr<OutputFrameSource> outputFrameSource()
public @Nonnull OutputFrameSource outputFrameSource()
fun outputFrameSource(): OutputFrameSource
- (easyar_OutputFrameSource *)outputFrameSource
public func outputFrameSource() -> OutputFrameSource
public virtual OutputFrameSource outputFrameSource()
Returns
create
void easyar_ObjectTracker_create(easyar_ObjectTracker * * Return)
static std::shared_ptr<ObjectTracker> create()
public static @Nonnull ObjectTracker create()
companion object fun create(): ObjectTracker
+ (easyar_ObjectTracker *)create
public static func create() -> ObjectTracker
public static ObjectTracker create()
Returns
setResultPostProcessing
Sets result post-processing. enablePersistentTargetInstance defaults to false. When enabled, if InputFrame data contains spatial information, targetInstances in ImageTrackerResult will contain all recognized instances, including those not currently tracked. enableMotionFusion defaults to false. When enabled, if InputFrame data contains time information and spatial information, the pose of targetInstances in ImageTrackerResult will be smoothed using RealTimeCoordinateTransform.
void easyar_ObjectTracker_setResultPostProcessing(easyar_ObjectTracker * This, bool enablePersistentTargetInstance, bool enableMotionFusion)
void setResultPostProcessing(bool enablePersistentTargetInstance, bool enableMotionFusion)
public void setResultPostProcessing(boolean enablePersistentTargetInstance, boolean enableMotionFusion)
fun setResultPostProcessing(enablePersistentTargetInstance: Boolean, enableMotionFusion: Boolean): Unit
- (void)setResultPostProcessing:(bool)enablePersistentTargetInstance enableMotionFusion:(bool)enableMotionFusion
public func setResultPostProcessing(_ enablePersistentTargetInstance: Bool, _ enableMotionFusion: Bool) -> Void
public virtual void setResultPostProcessing(bool enablePersistentTargetInstance, bool enableMotionFusion)
Parameters
| Name |
Type |
Description |
| enablePersistentTargetInstance |
Boolean |
|
| enableMotionFusion |
Boolean |
|
Returns
setResultAsyncMode
Sets result async mode. If results are output through outputFrameSource, it should be set to true; if results are obtained through getSyncResult, it should be set to false. enableAsync defaults to true. Sync mode takes effect only when the input frame contains spatial information and an XR License is used.
bool easyar_ObjectTracker_setResultAsyncMode(easyar_ObjectTracker * This, bool enableAsync)
bool setResultAsyncMode(bool enableAsync)
public boolean setResultAsyncMode(boolean enableAsync)
fun setResultAsyncMode(enableAsync: Boolean): Boolean
- (bool)setResultAsyncMode:(bool)enableAsync
public func setResultAsyncMode(_ enableAsync: Bool) -> Bool
public virtual bool setResultAsyncMode(bool enableAsync)
Parameters
| Name |
Type |
Description |
| enableAsync |
Boolean |
|
Returns
start
Starts the tracking algorithm.
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
Returns
stop
Pauses the tracking algorithm. Call start to restart tracking.
void easyar_ObjectTracker_stop(easyar_ObjectTracker * This)
public func stop() -> Void
public virtual void stop()
Returns
close
Closes. It should not be used after close.
void easyar_ObjectTracker_close(easyar_ObjectTracker * This)
public func close() -> Void
public virtual void close()
Returns
loadTarget
Loads a Target into the tracker. A Target can be recognized and tracked only after it is successfully loaded into the tracker. This method is asynchronous. The loading process may take some time to complete. During this period, detection of new and lost targets may take more time than usual, but tracking after detection is not affected. If you want to know the loading result, you need to handle callback data. callback will be called on the thread specified by CallbackScheduler. The tracking thread and operations other than other load/unload operations will not be blocked.
void easyar_ObjectTracker_loadTarget(easyar_ObjectTracker * This, easyar_Target * target, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromTargetAndBool callback)
void loadTarget(std::shared_ptr<Target> target, std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<Target>, bool)> callback)
public void loadTarget(@Nonnull Target target, @Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromTargetAndBool callback)
fun loadTarget(target: Target, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromTargetAndBool): Unit
- (void)loadTarget:(easyar_Target *)target callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_Target * target, bool status))callback
public func loadTarget(_ target: Target, _ callbackScheduler: CallbackScheduler, _ callback: @escaping (Target, Bool) -> Void) -> Void
public virtual void loadTarget(Target target, CallbackScheduler callbackScheduler, Action<Target, bool> callback)
Parameters
Returns
unloadTarget
Unloads a Target from the tracker. This method is asynchronous. The unloading process may take some time to complete. During this period, detection of new and lost targets may take more time than usual, but tracking after detection is not affected. If you want to know the unloading result, you need to handle callback data. callback will be called on the thread specified by CallbackScheduler. The tracking thread and operations other than other load/unload operations will not be blocked.
void easyar_ObjectTracker_unloadTarget(easyar_ObjectTracker * This, easyar_Target * target, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromTargetAndBool callback)
void unloadTarget(std::shared_ptr<Target> target, std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<Target>, bool)> callback)
public void unloadTarget(@Nonnull Target target, @Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromTargetAndBool callback)
fun unloadTarget(target: Target, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromTargetAndBool): Unit
- (void)unloadTarget:(easyar_Target *)target callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_Target * target, bool status))callback
public func unloadTarget(_ target: Target, _ callbackScheduler: CallbackScheduler, _ callback: @escaping (Target, Bool) -> Void) -> Void
public virtual void unloadTarget(Target target, CallbackScheduler callbackScheduler, Action<Target, bool> callback)
Parameters
Returns
targets
Returns targets currently loaded into the tracker. If asynchronous load/unload is being executed, the return value before load/unload completes will not reflect the results of those load/unload operations.
void easyar_ObjectTracker_targets(const easyar_ObjectTracker * This, easyar_ListOfTarget * * Return)
std::vector<std::shared_ptr<Target>> targets()
public java.util.@Nonnull ArrayList<@Nonnull Target> targets()
fun targets(): ArrayList<Target>
- (NSArray<easyar_Target *> *)targets
public func targets() -> [Target]
public virtual List<Target> targets()
Returns
setSimultaneousNum
Sets the maximum number of targets that can be tracked by the tracker. The default value is 1.
bool easyar_ObjectTracker_setSimultaneousNum(easyar_ObjectTracker * This, int num)
bool setSimultaneousNum(int num)
public boolean setSimultaneousNum(int num)
fun setSimultaneousNum(num: Int): Boolean
- (bool)setSimultaneousNum:(int)num
public func setSimultaneousNum(_ num: Int32) -> Bool
public virtual bool setSimultaneousNum(int num)
Parameters
| Name |
Type |
Description |
| num |
Int32 |
|
Returns
simultaneousNum
Gets the maximum number of targets that can be tracked by the tracker. The default value is 1.
int easyar_ObjectTracker_simultaneousNum(const easyar_ObjectTracker * This)
public int simultaneousNum()
fun simultaneousNum(): Int
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()
Returns
getSyncResult
Gets the synchronous output result. If ObjectTracker is paused, or if result async mode has not been set to false through setResultAsyncMode, the return value is empty.
void easyar_ObjectTracker_getSyncResult(easyar_ObjectTracker * This, easyar_MotionInputData * motionInputData, easyar_OptionalOfObjectTrackerResult * Return)
std::optional<std::shared_ptr<ObjectTrackerResult>> getSyncResult(std::shared_ptr<MotionInputData> motionInputData)
public @Nullable ObjectTrackerResult getSyncResult(@Nonnull MotionInputData motionInputData)
fun getSyncResult(motionInputData: MotionInputData): ObjectTrackerResult?
- (easyar_ObjectTrackerResult *)getSyncResult:(easyar_MotionInputData *)motionInputData
public func getSyncResult(_ motionInputData: MotionInputData) -> ObjectTrackerResult?
public virtual Optional<ObjectTrackerResult> getSyncResult(MotionInputData motionInputData)
Parameters
Returns