Class ObjectTracker
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
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()
Возвращаемое значение
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()
Возвращаемое значение
bufferRequirement
Количество буферов camera, занятых текущим компонентом.
int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
Возвращаемое значение
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()
Возвращаемое значение
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()
Возвращаемое значение
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 |
|
Возвращаемое значение
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 |
|
Возвращаемое значение
start
Запускает алгоритм tracking.
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
Возвращаемое значение
stop
Приостанавливает алгоритм tracking. Вызовите start, чтобы перезапустить tracking.
void easyar_ObjectTracker_stop(easyar_ObjectTracker * This)
public func stop() -> Void
public virtual void stop()
Возвращаемое значение
close
Закрывает. После close не следует использовать.
void easyar_ObjectTracker_close(easyar_ObjectTracker * This)
public func close() -> Void
public virtual void close()
Возвращаемое значение
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)
Параметры
Возвращаемое значение
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)
Параметры
Возвращаемое значение
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()
Возвращаемое значение
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 |
|
Возвращаемое значение
simultaneousNum
Получает максимальное количество target, которые tracker может отслеживать. Значение по умолчанию — 1.
int easyar_ObjectTracker_simultaneousNum(const easyar_ObjectTracker * This)
public int simultaneousNum()
fun simultaneousNum(): Int
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()
Возвращаемое значение
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)
Параметры
Возвращаемое значение