Table of Contents

Class ImageTracker

Espaço de nomes
easyar

ImageTracker implementa a detecção e rastreamento de cartões planos. ImageTracker ocupa (1 + SimultaneousNum) buffers de camera. Deve-se usar setBufferCapacity da camera para definir um número não inferior aos buffers de camera ocupados por todos os componentes. Após a criação, pode-se chamar start/stop para iniciar e parar a execução, start/stop são chamadas muito leves. Quando o componente não for mais necessário, pode-se chamar close para fechá-lo. Não deve ser usado após close. ImageTracker recebe entrada através de feedbackFrameSink para FeedbackFrame, FeedbackFrameSource deve ser conectado a feedbackFrameSink para uso. Antes que Target possa ser rastreado pelo ImageTracker, você precisa carregá-lo através de loadTarget/unloadTarget. Pode-se obter os resultados de load/unload através de callbacks de interface.

ImageTracker

Métodos

isAvailable

Retorna verdadeiro.

bool easyar_ImageTracker_isAvailable(void)
static bool isAvailable()
public static boolean isAvailable()
companion object fun isAvailable(): Boolean
+ (bool)isAvailable
public static func isAvailable() -> Bool
public static bool isAvailable()

Retorna

Tipo Descrição
Boolean

feedbackFrameSink

FeedbackFrame porta de entrada. O membro InputFrame em FeedbackFrame deve ter imagem, timestamp e parâmetros de camera, camera suporta câmera pinhole e fisheye.

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()

Retorna

Tipo Descrição
FeedbackFrameSink

bufferRequirement

Número de buffers de camera ocupados pelo componente atual.

int easyar_ImageTracker_bufferRequirement(easyar_ImageTracker * This)
int bufferRequirement()
public int bufferRequirement()
fun bufferRequirement(): Int
- (int)bufferRequirement
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()

Retorna

Tipo Descrição
Int32

outputFrameSource

OutputFrame porta de saída.

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()

Retorna

Tipo Descrição
OutputFrameSource

create

Cria. O modo de rastreamento padrão é ImageTrackerMode.PreferQuality.

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()

Retorna

Tipo Descrição
ImageTracker

createWithMode

Cria com um modo de rastreamento específico. Em telefones de baixo desempenho, pode-se usar ImageTrackerMode.PreferPerformance para obter melhor desempenho, mas com alguma perda na qualidade de rastreamento.

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

Nome Tipo Descrição
trackMode ImageTrackerMode

Retorna

Tipo Descrição
ImageTracker

createWithConfig

Cria com configuração 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

Nome Tipo Descrição
config ImageTrackerConfig

Retorna

Tipo Descrição
ImageTracker

setResultPostProcessing

Configura pós-processamento de resultados. enablePersistentTargetInstance é false por padrão, quando ativado, se os dados de InputFrame contiverem informações espaciais, targetInstances em ImageTrackerResult incluirá todas as instâncias detectadas (incluindo as não rastreadas atualmente). enableMotionFusion é false por padrão, quando ativado, se os dados de InputFrame contiverem informações de tempo e espaço, a pose de targetInstances em ImageTrackerResult será processada 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

Nome Tipo Descrição
enablePersistentTargetInstance Boolean
enableMotionFusion Boolean

Retorna

Tipo Descrição
Void

setResultAsyncMode

Configura modo assíncrono de resultados. Se os resultados forem enviados através de outputFrameSource, deve ser definido como true; se forem obtidos através de getSyncResult, deve ser definido como false. enableAsync é true por padrão. O modo síncrono só é efetivo quando o quadro de entrada contém informações espaciais e uma licença XR é usada.

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

Nome Tipo Descrição
enableAsync Boolean

Retorna

Tipo Descrição
Boolean

start

Inicia o algoritmo de rastreamento.

bool easyar_ImageTracker_start(easyar_ImageTracker * This)
bool start()
public boolean start()
fun start(): Boolean
- (bool)start
public func start() -> Bool
public virtual bool start()

Retorna

Tipo Descrição
Boolean

stop

Pausa o algoritmo de rastreamento. Chame start para reiniciar o rastreamento.

void easyar_ImageTracker_stop(easyar_ImageTracker * This)
void stop()
public void stop()
fun stop(): Unit
- (void)stop
public func stop() -> Void
public virtual void stop()

Retorna

Tipo Descrição
Void

close

Fecha. Não deve ser usado após close.

void easyar_ImageTracker_close(easyar_ImageTracker * This)
void close()
public void close()
fun close(): Unit
- (void)close
public func close() -> Void
public virtual void close()

Retorna

Tipo Descrição
Void

loadTarget

Carrega um Target no tracker. Target só pode ser reconhecido e rastreado após ser carregado com sucesso no tracker. Este método é assíncrono. O processo de carregamento pode levar algum tempo, durante o qual a detecção de novos e perdidos targets pode demorar mais do que o normal, mas o rastreamento após detecção não é afetado. Se desejar saber o resultado do carregamento, precisa lidar com dados de callback. O callback será chamado no thread especificado por CallbackScheduler. O thread de rastreamento e outras operações, exceto outros carregamentos/descarregamentos, não serão bloqueados.

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

Nome Tipo Descrição
target Target
callbackScheduler CallbackScheduler
callback Action<,>

Retorna

Tipo Descrição
Void

unloadTarget

Descarrega Target do tracker. Este método é assíncrono. O processo de descarregamento pode levar algum tempo, durante o qual a detecção de novos e perdidos targets pode demorar mais do que o normal, mas o rastreamento após detecção não é afetado. Se desejar saber o resultado do descarregamento, precisa lidar com dados de callback. O callback será chamado no thread especificado por CallbackScheduler. O thread de rastreamento e outras operações, exceto outros carregamentos/descarregamentos, não serão bloqueados.

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

Nome Tipo Descrição
target Target
callbackScheduler CallbackScheduler
callback Action<,>

Retorna

Tipo Descrição
Void

targets

Retorna os targets atualmente carregados no tracker. Se carregamentos/descarregamentos assíncronos estiverem em execução, o valor retornado antes da conclusão não refletirá os resultados desses carregamentos/descarregamentos.

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()

Retorna

Tipo Descrição
List<>

setSimultaneousNum

Define o número máximo de targets que podem ser rastreados pelo tracker. O valor padrão é 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

Nome Tipo Descrição
num Int32

Retorna

Tipo Descrição
Boolean

simultaneousNum

Obtém o número máximo de targets que podem ser rastreados pelo tracker. O valor padrão é 1.

int easyar_ImageTracker_simultaneousNum(const easyar_ImageTracker * This)
int simultaneousNum()
public int simultaneousNum()
fun simultaneousNum(): Int
- (int)simultaneousNum
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()

Retorna

Tipo Descrição
Int32

getSyncResult

Obtém resultados de saída síncronos. Se o ImageTracker estiver pausado, ou se o modo assíncrono de resultados não for definido como false via setResultAsyncMode, o valor retornado será 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

Nome Tipo Descrição
motionInputData MotionInputData

Retorna

Tipo Descrição
Optional<ImageTrackerResult>