Class ObjectTracker
ObjectTracker implémente la détection et le tracking de 3D object target. ObjectTracker occupe (1 + SimultaneousNum) buffers de camera. setBufferCapacity de la camera doit être utilisé pour définir un nombre de buffers de camera au moins égal au nombre de buffers de camera occupés par tous les composants. Après création, start/stop peut être appelé pour démarrer et arrêter l'exécution ; start/stop sont des appels très légers. Lorsque le composant n'est plus nécessaire, close peut être appelé pour le fermer. Il ne doit plus être utilisé après close. ObjectTracker entre FeedbackFrame via feedbackFrameSink, et FeedbackFrameSource doit être connecté à feedbackFrameSink pour être utilisé. Avant qu'un Target puisse être suivi par ObjectTracker, vous devez le charger via loadTarget/unloadTarget. Le résultat de load/unload peut être obtenu via les callbacks passés à l'interface.
ObjectTracker
Méthodes
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()
Retours
feedbackFrameSink
Port d'entrée FeedbackFrame. Le membre InputFrame dans FeedbackFrame doit posséder image, timestamp et camera parameters. camera prend en charge les caméras pinhole et fisheye.
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()
Retours
bufferRequirement
Nombre de buffers de camera occupés par le composant actuel.
int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
Retours
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()
Retours
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()
Retours
setResultPostProcessing
Définit le post-processing du résultat. enablePersistentTargetInstance vaut false par défaut. Lorsqu'il est activé, si les données InputFrame contiennent des informations spatiales, targetInstances dans ImageTrackerResult contiendra toutes les instance reconnues, y compris celles qui ne sont pas actuellement suivies. enableMotionFusion vaut false par défaut. Lorsqu'il est activé, si les données InputFrame contiennent des informations temporelles et spatiales, la pose de targetInstances dans ImageTrackerResult sera lissée avec 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)
Paramètres
| Nom |
Type |
Description |
| enablePersistentTargetInstance |
Boolean |
|
| enableMotionFusion |
Boolean |
|
Retours
setResultAsyncMode
Définit le mode async des résultats. Si les résultats sont produits via outputFrameSource, il doit être défini sur true ; si les résultats sont obtenus via getSyncResult, il doit être défini sur false. enableAsync vaut true par défaut. Le mode sync ne prend effet que lorsque l'input frame contient des informations spatiales et qu'une XR License est utilisée.
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)
Paramètres
| Nom |
Type |
Description |
| enableAsync |
Boolean |
|
Retours
start
Démarre l'algorithme de tracking.
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
Retours
stop
Met en pause l'algorithme de tracking. Appelez start pour redémarrer le tracking.
void easyar_ObjectTracker_stop(easyar_ObjectTracker * This)
public func stop() -> Void
public virtual void stop()
Retours
close
Ferme. Ne doit plus être utilisé après close.
void easyar_ObjectTracker_close(easyar_ObjectTracker * This)
public func close() -> Void
public virtual void close()
Retours
loadTarget
Charge un Target dans le tracker. Un Target ne peut être reconnu et suivi qu'après avoir été chargé avec succès dans le tracker. Cette méthode est asynchronous. Le processus de chargement peut prendre du temps. Pendant cette période, la détection de targets nouveaux et perdus peut prendre plus de temps que d'habitude, mais le tracking après détection n'est pas affecté. Si vous voulez connaître le résultat du chargement, vous devez traiter les données callback. callback sera appelé sur le thread spécifié par CallbackScheduler. Le thread de tracking et les opérations autres que d'autres load/unload ne seront pas bloqués.
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)
Paramètres
Retours
unloadTarget
Décharge un Target du tracker. Cette méthode est asynchronous. Le processus de déchargement peut prendre du temps. Pendant cette période, la détection de targets nouveaux et perdus peut prendre plus de temps que d'habitude, mais le tracking après détection n'est pas affecté. Si vous voulez connaître le résultat du déchargement, vous devez traiter les données callback. callback sera appelé sur le thread spécifié par CallbackScheduler. Le thread de tracking et les opérations autres que d'autres load/unload ne seront pas bloqués.
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)
Paramètres
Retours
targets
Renvoie les targets actuellement chargés dans le tracker. Si un load/unload asynchronous est en cours d'exécution, la valeur renvoyée avant la fin de load/unload ne reflétera pas les résultats de ces opérations load/unload.
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()
Retours
setSimultaneousNum
Définit le nombre maximal de targets pouvant être suivis par le tracker. La valeur par défaut est 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)
Paramètres
| Nom |
Type |
Description |
| num |
Int32 |
|
Retours
simultaneousNum
Obtient le nombre maximal de targets pouvant être suivis par le tracker. La valeur par défaut est 1.
int easyar_ObjectTracker_simultaneousNum(const easyar_ObjectTracker * This)
public int simultaneousNum()
fun simultaneousNum(): Int
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()
Retours
getSyncResult
Obtient le résultat de sortie synchrone. Si ObjectTracker est en pause, ou si le mode async des résultats n'a pas été défini sur false via setResultAsyncMode, la valeur renvoyée est vide.
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)
Paramètres
Retours