Class ObjectTracker
ObjectTracker implementa la detección y seguimiento de objetivos 3D.
ObjectTracker ocupa (1 + SimultaneousNum) buffers de cámara. Se debe utilizar setBufferCapacity de la cámara para establecer no menos que el número de buffers de cámara ocupados por todos los componentes.
Después de la creación, se puede llamar a start/stop para iniciar y detener el funcionamiento, start/stop son llamadas muy ligeras.
Cuando ya no se necesite el componente, se puede llamar a close para cerrarlo. No se debe seguir usando después de close.
ObjectTracker recibe entrada a través de feedbackFrameSink FeedbackFrame, y se debe conectar FeedbackFrameSource a feedbackFrameSink para su uso.
Antes de que Target pueda ser seguido por ObjectTracker, necesitas cargarlo mediante loadTarget/unloadTarget. Se puede obtener el resultado de load/unload pasando una devolución de llamada 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
FeedbackFrame puerto de entrada. El miembro InputFrame de FeedbackFrame debe tener imagen, marca de tiempo y parámetros de cámara, la cámara admite cámaras de agujero de alfiler y ojo de pez.
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 cámara 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
Configurar el procesamiento posterior de resultados.
enablePersistentTargetInstance es false por defecto; cuando está activado, si los datos de InputFrame contienen información espacial, entonces targetInstances en ImageTrackerResult incluirá todas las instancias detectadas (incluidas las no rastreadas actualmente).
enableMotionFusion es false por defecto; cuando está activado, si los datos de InputFrame contienen información temporal y espacial, entonces la pose de targetInstances en ImageTrackerResult se suavizará utilizando 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
Configurar el modo asíncrono de resultados. Si los resultados se emiten a través de outputFrameSource, se debe establecer en true; si los resultados se obtienen a través de getSyncResult, se debe establecer en false. Por defecto, enableAsync es true. El modo síncrono solo es efectivo cuando el marco de entrada contiene información espacial y se utiliza una licencia XR.
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
Iniciar el algoritmo de seguimiento.
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
Devuelve
stop
Pausar el algoritmo de seguimiento. Llame a start para reiniciar el seguimiento.
void easyar_ObjectTracker_stop(easyar_ObjectTracker * This)
public func stop() -> Void
public virtual void stop()
Devuelve
close
Cerrar. No se debe seguir usando después de close.
void easyar_ObjectTracker_close(easyar_ObjectTracker * This)
public func close() -> Void
public virtual void close()
Devuelve
loadTarget
Cargar un Target en el tracker. Target solo puede ser reconocido y seguido después de cargarse exitosamente en el tracker.
Este método es asíncrono. El proceso de carga puede tardar algún tiempo en completarse; durante este tiempo, la detección de nuevos y perdidos targets puede tomar más tiempo de lo habitual, pero el seguimiento después de la detección no se ve afectado. Si deseas conocer el resultado de la carga, necesitas manejar los datos de callback. El callback se llamará en el hilo especificado por CallbackScheduler. El hilo de seguimiento y otras operaciones, excepto otras cargas/descargas, 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
Descargar Target del tracker.
Este método es asíncrono. El proceso de descarga puede tardar algún tiempo en completarse; durante este tiempo, la detección de nuevos y perdidos targets puede tomar más tiempo de lo habitual, pero el seguimiento después de la detección no se ve afectado. Si deseas conocer el resultado de la descarga, necesitas manejar los datos de callback. El callback se llamará en el hilo especificado por CallbackScheduler. El hilo de seguimiento y otras operaciones, excepto otras cargas/descargas, 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 actualmente cargados en el tracker. Si se están ejecutando cargas/descargas asíncronas, el valor devuelto antes de completarse no reflejará los resultados de esas cargas/descargas.
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
Establecer el número máximo de objetivos que el tracker puede seguir. 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
Obtener el número máximo de objetivos que el tracker puede seguir. 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
Obtener el resultado de salida sincrónico. Si ObjectTracker está pausado, o si el modo asíncrono de resultados no se ha establecido en false mediante setResultAsyncMode, el valor devuelto es nulo.
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