Table of Contents

Class ObjectTracker

Espaço de nomes
easyar

ObjectTracker implementa detecção e tracking de 3D object target. ObjectTracker ocupa (1 + SimultaneousNum) buffers de camera. setBufferCapacity da camera deve ser usado para definir pelo menos o número de buffers de camera ocupados por todos os componentes. Após a criação, start/stop pode ser chamado para iniciar e parar a execução; start/stop são chamadas muito leves. Quando o componente não for mais necessário, close pode ser chamado para fechá-lo. Ele não deve ser usado após close. ObjectTracker recebe FeedbackFrame por meio de feedbackFrameSink, e FeedbackFrameSource deve ser conectado a feedbackFrameSink para uso. Antes que um Target possa ser rastreado pelo ObjectTracker, você precisa carregá-lo por meio de loadTarget/unloadTarget. O resultado de load/unload pode ser obtido por callbacks passados para a interface.

ObjectTracker

Métodos

isAvailable

Retorna true.

bool easyar_ObjectTracker_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

Porta de entrada FeedbackFrame. O membro InputFrame em FeedbackFrame deve ter image, timestamp e camera parameters. camera suporta câmeras pinhole e 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()

Retorna

Tipo Descrição
FeedbackFrameSink

bufferRequirement

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

int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * 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

Porta de saída OutputFrame.

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

Retorna

Tipo Descrição
OutputFrameSource

create

Cria uma instância.

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

Retorna

Tipo Descrição
ObjectTracker

setResultPostProcessing

Define o post-processing do resultado. enablePersistentTargetInstance é false por padrão. Quando ativado, se os dados de InputFrame contiverem informações espaciais, targetInstances em ImageTrackerResult conterá todas as instance reconhecidas, incluindo as que não estão sendo rastreadas no momento. enableMotionFusion é false por padrão. Quando ativado, se os dados de InputFrame contiverem informações de tempo e espaciais, a pose de targetInstances em ImageTrackerResult será suavizada 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

Nome Tipo Descrição
enablePersistentTargetInstance Boolean
enableMotionFusion Boolean

Retorna

Tipo Descrição
Void

setResultAsyncMode

Define o modo async de resultado. Se os resultados forem emitidos por outputFrameSource, deve ser definido como true; se os resultados forem obtidos por getSyncResult, deve ser definido como false. enableAsync é true por padrão. O modo sync só tem efeito quando o input frame contém informações espaciais e uma XR License é usada.

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

Nome Tipo Descrição
enableAsync Boolean

Retorna

Tipo Descrição
Boolean

start

Inicia o algoritmo de tracking.

bool easyar_ObjectTracker_start(easyar_ObjectTracker * 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 tracking. Chame start para reiniciar o tracking.

void easyar_ObjectTracker_stop(easyar_ObjectTracker * 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_ObjectTracker_close(easyar_ObjectTracker * 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. Um Target só pode ser reconhecido e rastreado depois de ser carregado com sucesso no tracker. Este método é asynchronous. O processo de carregamento pode levar algum tempo para ser concluído. Durante esse período, a detecção de targets novos e perdidos pode levar mais tempo do que o normal, mas o tracking após a detecção não é afetado. Se você quiser saber o resultado do carregamento, precisará tratar os dados callback. callback será chamado na thread especificada por CallbackScheduler. A thread de tracking e operações além de outros load/unload não serão bloqueadas.

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

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

Retorna

Tipo Descrição
Void

unloadTarget

Descarrega um Target do tracker. Este método é asynchronous. O processo de descarregamento pode levar algum tempo para ser concluído. Durante esse período, a detecção de targets novos e perdidos pode levar mais tempo do que o normal, mas o tracking após a detecção não é afetado. Se você quiser saber o resultado do descarregamento, precisará tratar os dados callback. callback será chamado na thread especificada por CallbackScheduler. A thread de tracking e operações além de outros load/unload não serão bloqueadas.

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

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

Retorna

Tipo Descrição
Void

targets

Retorna os targets atualmente carregados no tracker. Se load/unload asynchronous estiver em execução, o valor retornado antes da conclusão de load/unload não refletirá os resultados dessas operações 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()

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_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

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_ObjectTracker_simultaneousNum(const easyar_ObjectTracker * 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 o resultado de saída síncrono. Se ObjectTracker estiver pausado, ou se o modo async de resultado não tiver sido definido como false por setResultAsyncMode, o valor retornado será vazio.

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

Nome Tipo Descrição
motionInputData MotionInputData

Retorna

Tipo Descrição
Optional<ObjectTrackerResult>