Table of Contents

Class ObjectTracker

Пространство имен
easyar

ObjectTracker реализует обнаружение и tracking 3D object target. ObjectTracker занимает (1 + SimultaneousNum) буферов camera. Следует использовать setBufferCapacity у camera, чтобы установить количество буферов camera не меньше общего числа буферов, занятых всеми компонентами. После создания можно вызвать start/stop для запуска и остановки работы; start/stop являются очень легкими вызовами. Когда компонент больше не нужен, можно вызвать close для закрытия. После close его не следует использовать. ObjectTracker вводит FeedbackFrame через feedbackFrameSink; FeedbackFrameSource следует подключить к feedbackFrameSink для использования. Перед тем как Target сможет отслеживаться ObjectTracker, нужно загрузить его через loadTarget/unloadTarget. Результат load/unload можно получить через callback, переданный в интерфейс.

ObjectTracker

Методы

isAvailable

Возвращает 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()

Возвращаемое значение

Тип Описание
Boolean

feedbackFrameSink

Входной порт FeedbackFrame. Член InputFrame в FeedbackFrame должен иметь image, timestamp и camera parameters. camera поддерживает pinhole и 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()

Возвращаемое значение

Тип Описание
FeedbackFrameSink

bufferRequirement

Количество буферов camera, занятых текущим компонентом.

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

Возвращаемое значение

Тип Описание
Int32

outputFrameSource

Выходной порт 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()

Возвращаемое значение

Тип Описание
OutputFrameSource

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

Возвращаемое значение

Тип Описание
ObjectTracker

setResultPostProcessing

Задает post-processing результата. enablePersistentTargetInstance по умолчанию false. Если включено и данные InputFrame содержат пространственную информацию, targetInstances в ImageTrackerResult будут содержать все распознанные instance, включая те, которые сейчас не отслеживаются. enableMotionFusion по умолчанию false. Если включено и данные InputFrame содержат временную и пространственную информацию, pose у targetInstances в ImageTrackerResult будет сглаживаться с использованием 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)

Параметры

Имя Тип Описание
enablePersistentTargetInstance Boolean
enableMotionFusion Boolean

Возвращаемое значение

Тип Описание
Void

setResultAsyncMode

Задает async mode результата. Если результаты выводятся через outputFrameSource, следует установить true; если результаты получаются через getSyncResult, следует установить false. enableAsync по умолчанию true. Sync mode действует только когда входной frame содержит пространственную информацию и используется 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)

Параметры

Имя Тип Описание
enableAsync Boolean

Возвращаемое значение

Тип Описание
Boolean

start

Запускает алгоритм 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()

Возвращаемое значение

Тип Описание
Boolean

stop

Приостанавливает алгоритм tracking. Вызовите start, чтобы перезапустить 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()

Возвращаемое значение

Тип Описание
Void

close

Закрывает. После 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()

Возвращаемое значение

Тип Описание
Void

loadTarget

Загружает Target в tracker. Target может распознаваться и отслеживаться только после успешной загрузки в tracker. Этот метод asynchronous. Процесс загрузки может занять некоторое время. В этот период обнаружение новых и потерянных target может занимать больше времени, чем обычно, но tracking после обнаружения не затрагивается. Если нужно узнать результат загрузки, нужно обработать данные callback. callback будет вызван в thread, указанном CallbackScheduler. Tracking thread и операции, кроме других load/unload, блокироваться не будут.

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)

Параметры

Имя Тип Описание
target Target
callbackScheduler CallbackScheduler
callback Action<,>

Возвращаемое значение

Тип Описание
Void

unloadTarget

Выгружает Target из tracker. Этот метод asynchronous. Процесс выгрузки может занять некоторое время. В этот период обнаружение новых и потерянных target может занимать больше времени, чем обычно, но tracking после обнаружения не затрагивается. Если нужно узнать результат выгрузки, нужно обработать данные callback. callback будет вызван в thread, указанном CallbackScheduler. Tracking thread и операции, кроме других load/unload, блокироваться не будут.

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)

Параметры

Имя Тип Описание
target Target
callbackScheduler CallbackScheduler
callback Action<,>

Возвращаемое значение

Тип Описание
Void

targets

Возвращает target, которые сейчас загружены в tracker. Если выполняется asynchronous load/unload, возвращаемое значение до завершения load/unload не будет отражать результаты этих операций 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()

Возвращаемое значение

Тип Описание
List<>

setSimultaneousNum

Устанавливает максимальное количество target, которые tracker может отслеживать. Значение по умолчанию — 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)

Параметры

Имя Тип Описание
num Int32

Возвращаемое значение

Тип Описание
Boolean

simultaneousNum

Получает максимальное количество target, которые tracker может отслеживать. Значение по умолчанию — 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()

Возвращаемое значение

Тип Описание
Int32

getSyncResult

Получает синхронный результат вывода. Если ObjectTracker приостановлен или result async mode не был установлен в false через setResultAsyncMode, возвращаемое значение пустое.

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)

Параметры

Имя Тип Описание
motionInputData MotionInputData

Возвращаемое значение

Тип Описание
Optional<ObjectTrackerResult>