Class ObjectTracker
ObjectTracker реализует обнаружение и отслеживание 3D-объект-таргетов.
ObjectTracker использует буфер (1 + SimultaneousNum) камер. Необходимо использовать setBufferCapacity камеры для установки количества буферов не менее, чем занимают все компоненты.
После создания можно вызывать start/stop для запуска и остановки работы, start/stop — очень легкие вызовы.
Когда компонент больше не нужен, можно вызвать close для его закрытия. После close использовать его не следует.
ObjectTracker получает входные данные через feedbackFrameSink FeedbackFrame. FeedbackFrameSource должен быть подключен к feedbackFrameSink для использования.
Перед тем как Target сможет отслеживаться ObjectTracker, его необходимо загрузить через loadTarget/unloadTarget. Результаты загрузки/выгрузки можно получить через 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 обязан содержать изображение, временную метку и параметры камеры. Камера поддерживает модели 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
Количество буферов камеры, используемых текущим компонентом.
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
Настраивает постобработку результатов.
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
Устанавливает асинхронный режим вывода результатов. Если результаты выводятся через outputFrameSource, установите true. Если результаты получаются через getSyncResult, установите false. По умолчанию enableAsync true. Синхронный режим работает только при наличии пространственной информации во входном кадре и использовании 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
Запускает алгоритм отслеживания.
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
Возвращаемое значение
stop
Приостанавливает алгоритм отслеживания. Вызовите start для перезапуска.
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 может быть распознан и отслежен только после успешной загрузки.
Метод асинхронный. Загрузка может занять время. В течение этого времени обнаружение новых и потерянных target может занимать больше времени обычного, но отслеживание после обнаружения не страдает. Для получения результата загрузки обработайте данные в callback. Callback будет вызван в потоке, указанном в CallbackScheduler. Поток отслеживания и другие операции (кроме загрузки/выгрузки) не блокируются.
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.
Метод асинхронный. Выгрузка может занять время. В течение этого времени обнаружение новых и потерянных target может занимать больше времени обычного, но отслеживание после обнаружения не страдает. Для получения результата выгрузки обработайте данные в callback. Callback будет вызван в потоке, указанном в CallbackScheduler. Поток отслеживания и другие операции (кроме загрузки/выгрузки) не блокируются.
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 на данный момент. Если выполняется асинхронная загрузка/выгрузка, возвращаемое значение до их завершения не будет отражать результаты этих операций.
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 приостановлен или асинхронный режим результатов не был отключен через setResultAsyncMode (false), возвращается пустое значение.
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)
Параметры
Возвращаемое значение