Table of Contents

Class ObjectTracker

네임스페이스
easyar

ObjectTracker는 3D object target의 감지와 tracking을 구현합니다. ObjectTracker는 (1 + SimultaneousNum)개의 camera buffer를 차지합니다. camera의 setBufferCapacity를 사용하여 모든 컴포넌트가 차지하는 camera buffer 수 이상으로 설정해야 합니다. 생성 후 start/stop을 호출하여 실행을 시작하고 중지할 수 있으며, start/stop은 매우 가벼운 호출입니다. 이 컴포넌트가 더 이상 필요하지 않으면 close를 호출하여 닫을 수 있습니다. close 후에는 계속 사용하면 안 됩니다. ObjectTracker는 feedbackFrameSink를 통해 FeedbackFrame을 입력하므로, FeedbackFrameSource를 feedbackFrameSink에 연결하여 사용해야 합니다. Target이 ObjectTracker에 의해 tracking되기 전에 loadTarget/unloadTarget을 통해 로드해야 합니다. 인터페이스에 전달한 callback을 통해 load/unload 결과를 얻을 수 있습니다.

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 입력 포트입니다. FeedbackFrame의 InputFrame 멤버는 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 buffer 수입니다.

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 데이터에 공간 정보가 포함된 경우 ImageTrackerResult의 targetInstances에는 현재 tracking되지 않는 것을 포함하여 인식된 모든 instance가 포함됩니다. enableMotionFusion의 기본값은 false입니다. 활성화되면 InputFrame 데이터에 시간 정보와 공간 정보가 포함된 경우 ImageTrackerResult의 targetInstances의 pose가 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는 input 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에 성공적으로 로드된 후에만 인식 및 tracking될 수 있습니다. 이 메서드는 asynchronous 메서드입니다. 로드 과정은 완료되는 데 시간이 걸릴 수 있습니다. 이 기간 동안 새로운 target 및 잃어버린 target의 감지는 평소보다 더 오래 걸릴 수 있지만, 감지 후 tracking에는 영향이 없습니다. 로드 결과를 알고 싶으면 callback 데이터를 처리해야 합니다. callback은 CallbackScheduler가 지정한 thread에서 호출됩니다. 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

tracker에서 Target을 언로드합니다. 이 메서드는 asynchronous 메서드입니다. 언로드 과정은 완료되는 데 시간이 걸릴 수 있습니다. 이 기간 동안 새로운 target 및 잃어버린 target의 감지는 평소보다 더 오래 걸릴 수 있지만, 감지 후 tracking에는 영향이 없습니다. 언로드 결과를 알고 싶으면 callback 데이터를 처리해야 합니다. callback은 CallbackScheduler가 지정한 thread에서 호출됩니다. 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

현재 tracker에 로드된 target을 반환합니다. 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

tracker가 tracking할 수 있는 최대 target 수를 설정합니다. 기본값은 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

tracker가 tracking할 수 있는 최대 target 수를 가져옵니다. 기본값은 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가 일시 중지되었거나 setResultAsyncMode를 통해 결과 async mode를 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)

매개 변수

이름 형식 설명
motionInputData MotionInputData

반환 값

형식 설명
Optional<ObjectTrackerResult>