Class ObjectTracker
ObjectTracker implementiert Erkennung und Tracking von 3D object targets. ObjectTracker belegt (1 + SimultaneousNum) camera-Buffer. setBufferCapacity der camera sollte verwendet werden, um mindestens die Anzahl der camera-Buffer festzulegen, die von allen Komponenten belegt werden. Nach der Erstellung kann start/stop aufgerufen werden, um den Betrieb zu starten und zu stoppen; start/stop sind sehr leichte Aufrufe. Wenn die Komponente nicht mehr benötigt wird, kann close zum Schließen aufgerufen werden. Nach close sollte sie nicht mehr verwendet werden. ObjectTracker gibt FeedbackFrame über feedbackFrameSink ein; FeedbackFrameSource sollte zur Verwendung mit feedbackFrameSink verbunden werden. Bevor ein Target von ObjectTracker getrackt werden kann, müssen Sie es über loadTarget/unloadTarget laden. Das Ergebnis von load/unload kann über callbacks ermittelt werden, die an die Schnittstelle übergeben werden.
ObjectTracker
Methoden
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()
Rückgabewert
feedbackFrameSink
FeedbackFrame-Eingabeport. Das InputFrame-Member in FeedbackFrame muss image, timestamp und camera parameters besitzen. camera unterstützt pinhole- und fisheye-Kameras.
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()
Rückgabewert
bufferRequirement
Anzahl der camera-Buffer, die von der aktuellen Komponente belegt werden.
int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
Rückgabewert
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()
Rückgabewert
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()
Rückgabewert
setResultPostProcessing
Legt Ergebnis-post-processing fest. enablePersistentTargetInstance ist standardmäßig false. Wenn aktiviert und InputFrame-Daten räumliche Informationen enthalten, enthalten targetInstances in ImageTrackerResult alle erkannten instance, einschließlich der derzeit nicht getrackten. enableMotionFusion ist standardmäßig false. Wenn aktiviert und InputFrame-Daten Zeitinformationen und räumliche Informationen enthalten, wird die pose der targetInstances in ImageTrackerResult mit RealTimeCoordinateTransform geglättet.
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)
Parameter
| Name |
Typ |
Beschreibung |
| enablePersistentTargetInstance |
Boolean |
|
| enableMotionFusion |
Boolean |
|
Rückgabewert
setResultAsyncMode
Legt den result async mode fest. Wenn Ergebnisse über outputFrameSource ausgegeben werden, sollte true gesetzt werden; wenn Ergebnisse über getSyncResult abgerufen werden, sollte false gesetzt werden. enableAsync ist standardmäßig true. Der Sync-Modus wirkt nur, wenn der input frame räumliche Informationen enthält und eine XR License verwendet wird.
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)
Parameter
| Name |
Typ |
Beschreibung |
| enableAsync |
Boolean |
|
Rückgabewert
start
Startet den Tracking-Algorithmus.
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
Rückgabewert
stop
Pausiert den Tracking-Algorithmus. Rufen Sie start auf, um Tracking neu zu starten.
void easyar_ObjectTracker_stop(easyar_ObjectTracker * This)
public func stop() -> Void
public virtual void stop()
Rückgabewert
close
Schließt. Nach close sollte es nicht mehr verwendet werden.
void easyar_ObjectTracker_close(easyar_ObjectTracker * This)
public func close() -> Void
public virtual void close()
Rückgabewert
loadTarget
Lädt ein Target in den tracker. Ein Target kann erst erkannt und getrackt werden, nachdem es erfolgreich in den tracker geladen wurde. Diese Methode ist asynchronous. Der Ladevorgang kann einige Zeit dauern. Während dieser Zeit kann die Erkennung neuer und verlorener targets länger dauern als gewöhnlich, aber Tracking nach der Erkennung ist nicht betroffen. Wenn Sie das Ladeergebnis wissen möchten, müssen Sie callback-Daten verarbeiten. callback wird in dem von CallbackScheduler angegebenen thread aufgerufen. Der Tracking-thread und Operationen außer anderen load/unload-Operationen werden nicht blockiert.
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)
Parameter
Rückgabewert
unloadTarget
Entlädt ein Target aus dem tracker. Diese Methode ist asynchronous. Der Entladevorgang kann einige Zeit dauern. Während dieser Zeit kann die Erkennung neuer und verlorener targets länger dauern als gewöhnlich, aber Tracking nach der Erkennung ist nicht betroffen. Wenn Sie das Entladeergebnis wissen möchten, müssen Sie callback-Daten verarbeiten. callback wird in dem von CallbackScheduler angegebenen thread aufgerufen. Der Tracking-thread und Operationen außer anderen load/unload-Operationen werden nicht blockiert.
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)
Parameter
Rückgabewert
targets
Gibt die derzeit in den tracker geladenen targets zurück. Wenn asynchronous load/unload ausgeführt wird, spiegelt der Rückgabewert vor Abschluss von load/unload die Ergebnisse dieser load/unload-Operationen nicht wider.
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()
Rückgabewert
setSimultaneousNum
Legt die maximale Anzahl von targets fest, die vom tracker getrackt werden können. Der Standardwert ist 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)
Parameter
| Name |
Typ |
Beschreibung |
| num |
Int32 |
|
Rückgabewert
simultaneousNum
Ruft die maximale Anzahl von targets ab, die vom tracker getrackt werden können. Der Standardwert ist 1.
int easyar_ObjectTracker_simultaneousNum(const easyar_ObjectTracker * This)
public int simultaneousNum()
fun simultaneousNum(): Int
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()
Rückgabewert
getSyncResult
Ruft das synchrone Ausgabeergebnis ab. Wenn ObjectTracker pausiert ist oder der result async mode nicht über setResultAsyncMode auf false gesetzt wurde, ist der Rückgabewert leer.
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)
Parameter
Rückgabewert