Class ObjectTracker
ObjectTracker implementa la detección y el tracking de 3D object target. ObjectTracker ocupa (1 + SimultaneousNum) buffers de camera. Debe usarse setBufferCapacity de camera para establecer no menos que el número de buffers de camera ocupados por todos los componentes. Después de crearlo, se puede llamar a start/stop para iniciar y detener la ejecución; start/stop son llamadas muy ligeras. Cuando el componente ya no sea necesario, se puede llamar a close para cerrarlo. No debe usarse después de close. ObjectTracker introduce FeedbackFrame mediante feedbackFrameSink, y FeedbackFrameSource debe conectarse a feedbackFrameSink para usarse. Antes de que un Target pueda ser seguido por ObjectTracker, debe cargarlo mediante loadTarget/unloadTarget. El resultado de load/unload puede obtenerse mediante callbacks pasados a la interfaz.
ObjectTracker
Métodos
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()
Devuelve
feedbackFrameSink
Puerto de entrada de FeedbackFrame. El miembro InputFrame en FeedbackFrame debe tener image, timestamp y camera parameters. camera admite cámaras pinhole y 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()
Devuelve
bufferRequirement
Número de buffers de camera ocupados por el componente actual.
int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
Devuelve
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()
Devuelve
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()
Devuelve
setResultPostProcessing
Establece el post-processing del resultado. enablePersistentTargetInstance es false de forma predeterminada. Cuando está habilitado, si los datos de InputFrame contienen información espacial, targetInstances en ImageTrackerResult contendrá todas las instance reconocidas, incluidas las que no se siguen actualmente. enableMotionFusion es false de forma predeterminada. Cuando está habilitado, si los datos de InputFrame contienen información temporal y espacial, la pose de targetInstances en ImageTrackerResult se suavizará usando 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)
Parámetros
| Nombre |
Tipo |
Descripción |
| enablePersistentTargetInstance |
Boolean |
|
| enableMotionFusion |
Boolean |
|
Devuelve
setResultAsyncMode
Establece el modo async de resultado. Si los resultados se emiten mediante outputFrameSource, debe establecerse en true; si los resultados se obtienen mediante getSyncResult, debe establecerse en false. enableAsync es true de forma predeterminada. El modo sync solo tiene efecto cuando el input frame contiene información espacial y se usa una XR License.
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)
Parámetros
| Nombre |
Tipo |
Descripción |
| enableAsync |
Boolean |
|
Devuelve
start
Inicia el algoritmo de tracking.
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
Devuelve
stop
Pausa el algoritmo de tracking. Llame a start para reiniciar tracking.
void easyar_ObjectTracker_stop(easyar_ObjectTracker * This)
public func stop() -> Void
public virtual void stop()
Devuelve
close
Cierra. No debe usarse después de close.
void easyar_ObjectTracker_close(easyar_ObjectTracker * This)
public func close() -> Void
public virtual void close()
Devuelve
loadTarget
Carga un Target en el tracker. Un Target solo puede ser reconocido y seguido después de cargarse correctamente en el tracker. Este método es asynchronous. El proceso de carga puede tardar algún tiempo en completarse. Durante este período, la detección de targets nuevos y perdidos puede tardar más de lo habitual, pero el tracking después de la detección no se ve afectado. Si desea conocer el resultado de la carga, debe manejar los datos de callback. callback se llamará en el thread especificado por CallbackScheduler. El thread de tracking y las operaciones distintas de otras load/unload no se bloquearán.
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)
Parámetros
Devuelve
unloadTarget
Descarga un Target del tracker. Este método es asynchronous. El proceso de descarga puede tardar algún tiempo en completarse. Durante este período, la detección de targets nuevos y perdidos puede tardar más de lo habitual, pero el tracking después de la detección no se ve afectado. Si desea conocer el resultado de la descarga, debe manejar los datos de callback. callback se llamará en el thread especificado por CallbackScheduler. El thread de tracking y las operaciones distintas de otras load/unload no se bloquearán.
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)
Parámetros
Devuelve
targets
Devuelve los targets cargados actualmente en el tracker. Si se está ejecutando load/unload asynchronous, el valor devuelto antes de que load/unload se complete no reflejará los resultados de esas operaciones 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()
Devuelve
setSimultaneousNum
Establece el número máximo de targets que puede seguir el tracker. El valor predeterminado es 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)
Parámetros
| Nombre |
Tipo |
Descripción |
| num |
Int32 |
|
Devuelve
simultaneousNum
Obtiene el número máximo de targets que puede seguir el tracker. El valor predeterminado es 1.
int easyar_ObjectTracker_simultaneousNum(const easyar_ObjectTracker * This)
public int simultaneousNum()
fun simultaneousNum(): Int
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()
Devuelve
getSyncResult
Obtiene el resultado de salida síncrono. Si ObjectTracker está pausado, o si el modo async de resultado no se ha establecido en false mediante setResultAsyncMode, el valor devuelto está vacío.
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)
Parámetros
Devuelve