Table of Contents

Class ObjectTracker

네임스페이스
easyar

ObjectTracker는 3D 객체 타겟의 감지 및 추적을 구현합니다. ObjectTracker는 (1 + SimultaneousNum)개의 카메라 버퍼를 점유합니다. 모든 컴포넌트가 점유하는 카메라 버퍼 수량 이상으로 설정하기 위해 camera의 setBufferCapacity를 사용해야 합니다. 생성 후, 실행 시작 및 중지를 위해 start/stop을 호출할 수 있으며, start/stop은 매우 가벼운 호출입니다. 해당 컴포넌트가 더 이상 필요하지 않을 경우, close를 호출하여 종료할 수 있습니다. close 이후에는 계속 사용하지 않아야 합니다. ObjectTracker는 feedbackFrameSink를 통해 FeedbackFrame을 입력받으며, FeedbackFrameSource를 feedbackFrameSink에 연결하여 사용해야 합니다. Target이 ObjectTracker에 의해 추적되기 전에, loadTarget/unloadTarget을 통해 로드해야 합니다. 로드/언로드 결과는 인터페이스 콜백을 통해 획득할 수 있습니다.

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 멤버는 반드시 이미지, 타임스탬프 및 카메라 파라미터를 보유해야 하며, 카메라는 핀홀 및 어안 렌즈 카메라를 지원합니다.

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

현재 구성 요소가 카메라 버퍼를 점유하는 수량.

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

결과 후처리 설정. enablePersistentTargetInstance 기본값은 false이며, 활성화 시 InputFrame 데이터에 공간 정보가 포함되어 있으면 ImageTrackerResult의 targetInstances가 인식된 모든 instance(현재 추적 중이지 않은 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

결과 비동기 모드 설정. 결과가 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

반환 값

형식 설명
Boolean

start

추적 알고리즘 시작.

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

추적 알고리즘을 일시 중지합니다. 재시작하려면 start를 호출하세요.

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

<xref:n:easyar.Target>를 트래커에 로드합니다. <xref:n:easyar.Target>는 트래커에 성공적으로 로드된 후에야 인식 및 추적될 수 있습니다. 이 메서드는 비동기 방식입니다. 로드 과정은 완료하는 데 약간의 시간이 필요할 수 있으며, 이 기간 동안 새로운 타겟과 손실된 타겟의 감지에는 평소보다 더 많은 시간이 소요될 수 있지만, 감지된 후의 추적에는 영향을 미치지 않습니다. 로드 결과를 알고 싶다면 콜백 데이터를 처리해야 합니다. 콜백은 <xref:n:easyar.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)

매개 변수

이름 형식 설명
target Target
callbackScheduler CallbackScheduler
callback Action<,>

반환 값

형식 설명
Void

unloadTarget

tracker에서 Target을(를) 언로드합니다. 이 메서드는 비동기 메서드입니다. 언로드하는 데 시간이 걸릴 수 있으며, 이 기간 동안 새로운 타겟과 손실된 타겟의 감지가 평소보다 더 오래 걸릴 수 있습니다. 하지만 감지 후의 추적은 영향을 받지 않습니다. 언로드 결과를 확인하려면 콜백 데이터를 처리해야 합니다. 콜백은 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)

매개 변수

이름 형식 설명
target Target
callbackScheduler CallbackScheduler
callback Action<,>

반환 값

형식 설명
Void

targets

현재 트래커에 로드된 대상을 반환합니다. 비동기 로드/언로드가 진행 중인 경우, 로드/언로드가 완료되기 전의 반환값은 해당 로드/언로드 결과를 반영하지 않습니다.

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

추적기가 추적할 수 있는 최대 대상 개수를 설정합니다. 기본값은 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

추적 가능한 대상의 최대 개수를 가져옵니다. 기본값은 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를 통해 결과 비동기 모드를 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>