Class ImageTracker
ImageTracker implementa la detección y seguimiento de tarjetas planas.
ImageTracker ocupa (1 + SimultaneousNum) buffers de camera. Debe configurar el setBufferCapacity de camera para que sea al menos el número de buffers de camera ocupados por todos los componentes.
Después de crear, puede llamar a start/stop para comenzar y detener la ejecución; start/stop son llamadas muy ligeras.
Cuando ya no necesite este componente, puede llamar a close para cerrarlo. No debe seguir usándolo después de close.
ImageTracker ingresa FeedbackFrame a través de feedbackFrameSink; debe conectar FeedbackFrameSource a feedbackFrameSink para su uso.
Antes de que Target pueda ser seguido por ImageTracker, debe cargarlo mediante loadTarget/unloadTarget. Puede obtener los resultados de load/unload a través de devoluciones de llamada de la interfaz.
ImageTracker
Métodos
isAvailable
bool easyar_ImageTracker_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 requiere que tenga parámetros de imagen, timestamp y camera; camera admite cámaras de agujero de alfiler y ojo de pez.
void easyar_ImageTracker_feedbackFrameSink(easyar_ImageTracker * 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_ImageTracker_bufferRequirement(easyar_ImageTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
Devuelve
outputFrameSource
void easyar_ImageTracker_outputFrameSource(easyar_ImageTracker * 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_ImageTracker_create(easyar_ImageTracker * * Return)
static std::shared_ptr<ImageTracker> create()
public static @Nonnull ImageTracker create()
companion object fun create(): ImageTracker
+ (easyar_ImageTracker *)create
public static func create() -> ImageTracker
public static ImageTracker create()
Devuelve
createWithMode
Crea con un modo de seguimiento específico. En teléfonos de gama baja, puede usar ImageTrackerMode.PreferPerformance para obtener un mejor rendimiento, pero la efectividad del seguimiento sufrirá una ligera pérdida.
void easyar_ImageTracker_createWithMode(easyar_ImageTrackerMode trackMode, easyar_ImageTracker * * Return)
static std::shared_ptr<ImageTracker> createWithMode(ImageTrackerMode trackMode)
public static @Nonnull ImageTracker createWithMode(int trackMode)
companion object fun createWithMode(trackMode: Int): ImageTracker
+ (easyar_ImageTracker *)createWithMode:(easyar_ImageTrackerMode)trackMode
public static func createWithMode(_ trackMode: ImageTrackerMode) -> ImageTracker
public static ImageTracker createWithMode(ImageTrackerMode trackMode)
Parámetros
Devuelve
createWithConfig
Crea con una configuración específica.
void easyar_ImageTracker_createWithConfig(easyar_ImageTrackerConfig * config, easyar_ImageTracker * * Return)
static std::shared_ptr<ImageTracker> createWithConfig(std::shared_ptr<ImageTrackerConfig> config)
public static @Nonnull ImageTracker createWithConfig(@Nonnull ImageTrackerConfig config)
companion object fun createWithConfig(config: ImageTrackerConfig): ImageTracker
+ (easyar_ImageTracker *)createWithConfig:(easyar_ImageTrackerConfig *)config
public static func createWithConfig(_ config: ImageTrackerConfig) -> ImageTracker
public static ImageTracker createWithConfig(ImageTrackerConfig config)
Parámetros
Devuelve
setResultPostProcessing
Configura el procesamiento posterior de resultados.
enablePersistentTargetInstance es false por defecto; cuando está activado, si los datos de InputFrame contienen información espacial, targetInstances en ImageTrackerResult incluirá todas las instancias detectadas (incluyendo las no seguidas actualmente).
enableMotionFusion es false por defecto; cuando está activado, si los datos de InputFrame contienen información temporal y espacial, la pose de targetInstances en ImageTrackerResult se procesará usando RealTimeCoordinateTransform.
void easyar_ImageTracker_setResultPostProcessing(easyar_ImageTracker * 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
Configura el modo asíncrono de resultados. Si los resultados se emiten a través de outputFrameSource, debe configurarse a true; si los resultados se obtienen mediante getSyncResult, debe configurarse a false. enableAsync es true por defecto. El modo síncrono solo entra en vigor si el cuadro de entrada contiene información espacial y se usa una licencia XR.
bool easyar_ImageTracker_setResultAsyncMode(easyar_ImageTracker * 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 seguimiento.
bool easyar_ImageTracker_start(easyar_ImageTracker * This)
public func start() -> Bool
public virtual bool start()
Devuelve
stop
Pausa el algoritmo de seguimiento. Llame a start para reiniciar el seguimiento.
void easyar_ImageTracker_stop(easyar_ImageTracker * This)
public func stop() -> Void
public virtual void stop()
Devuelve
close
Cierra. No debe seguir usándose después de close.
void easyar_ImageTracker_close(easyar_ImageTracker * This)
public func close() -> Void
public virtual void close()
Devuelve
loadTarget
Carga 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 tomar algún tiempo; durante este tiempo, la detección de targets nuevos y perdidos puede llevar más tiempo de lo habitual, pero el seguimiento después de la detección no se ve afectado. Si desea saber el resultado de la carga, debe 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_ImageTracker_loadTarget(easyar_ImageTracker * 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 Target del tracker.
Este método es asíncrono. El proceso de descarga puede tomar algún tiempo; durante este tiempo, la detección de targets nuevos y perdidos puede llevar más tiempo de lo habitual, pero el seguimiento después de la detección no se ve afectado. Si desea saber el resultado de la descarga, debe 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_ImageTracker_unloadTarget(easyar_ImageTracker * 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 que se completen no reflejará los resultados de esas cargas/descargas.
void easyar_ImageTracker_targets(const easyar_ImageTracker * 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 objetivos que pueden ser seguidos por el tracker. El valor predeterminado es 1.
bool easyar_ImageTracker_setSimultaneousNum(easyar_ImageTracker * 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 objetivos que pueden ser seguidos por el tracker. El valor predeterminado es 1.
int easyar_ImageTracker_simultaneousNum(const easyar_ImageTracker * 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 ImageTracker está pausado, o si el modo asíncrono de resultados no se ha configurado a false mediante setResultAsyncMode, el valor devuelto es nulo.
void easyar_ImageTracker_getSyncResult(easyar_ImageTracker * This, easyar_MotionInputData * motionInputData, easyar_OptionalOfImageTrackerResult * Return)
std::optional<std::shared_ptr<ImageTrackerResult>> getSyncResult(std::shared_ptr<MotionInputData> motionInputData)
public @Nullable ImageTrackerResult getSyncResult(@Nonnull MotionInputData motionInputData)
fun getSyncResult(motionInputData: MotionInputData): ImageTrackerResult?
- (easyar_ImageTrackerResult *)getSyncResult:(easyar_MotionInputData *)motionInputData
public func getSyncResult(_ motionInputData: MotionInputData) -> ImageTrackerResult?
public virtual Optional<ImageTrackerResult> getSyncResult(MotionInputData motionInputData)
Parámetros
Devuelve