Table of Contents

Class ImageTracker

네임스페이스
easyar

ImageTracker는 평면 카드의 감지 및 추적을 구현합니다. ImageTracker는 (1 + SimultaneousNum)개의 camera buffer를 점유합니다. camera의 setBufferCapacity를 사용하여 모든 컴포넌트가 점유하는 camera buffer 수량보다 적지 않게 설정해야 합니다. 생성 후, start/stop을 호출하여 실행을 시작 및 중지할 수 있으며, start/stop은 매우 가벼운 호출입니다. 해당 컴포넌트가 더 이상 필요하지 않을 때 close를 호출하여 종료할 수 있습니다. close 후에는 계속 사용해서는 안 됩니다. ImageTracker는 feedbackFrameSink를 통해 FeedbackFrame을 입력받으며, FeedbackFrameSource를 feedbackFrameSink에 연결하여 사용해야 합니다. Target이 ImageTracker에 의해 추적되기 전에 loadTarget/unloadTarget을 통해 로드해야 합니다. 인터페이스 콜백을 전달하여 load/unload 결과를 얻을 수 있습니다.

ImageTracker

메서드

isAvailable

返回true.

bool easyar_ImageTracker_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_ImageTracker_feedbackFrameSink(easyar_ImageTracker * 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_ImageTracker_bufferRequirement(easyar_ImageTracker * This)
int bufferRequirement()
public int bufferRequirement()
fun bufferRequirement(): Int
- (int)bufferRequirement
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()

반환 값

형식 설명
Int32

outputFrameSource

OutputFrame 출력 포트.

void easyar_ImageTracker_outputFrameSource(easyar_ImageTracker * 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

생성. 기본 추적 모드는 ImageTrackerMode.PreferQuality입니다.

void easyar_ImageTracker_create(easyar_ImageTracker * * Return)
static std::shared_ptr<ImageTracker> create()
public static @Nonnull ImageTracker create()
companion object fun create(): ImageTracker
+ (easyar_ImageTracker *)create
public static func create() -> ImageTracker
public static ImageTracker create()

반환 값

형식 설명
ImageTracker

createWithMode

특정 추적 모드로 생성됩니다. 저가형 휴대폰에서는 ImageTrackerMode.PreferPerformance를 사용하여 더 나은 성능을 얻을 수 있지만, 추적 효과는 어느 정도 감소할 수 있습니다.

void easyar_ImageTracker_createWithMode(easyar_ImageTrackerMode trackMode, easyar_ImageTracker * * Return)
static std::shared_ptr<ImageTracker> createWithMode(ImageTrackerMode trackMode)
public static @Nonnull ImageTracker createWithMode(int trackMode)
companion object fun createWithMode(trackMode: Int): ImageTracker
+ (easyar_ImageTracker *)createWithMode:(easyar_ImageTrackerMode)trackMode
public static func createWithMode(_ trackMode: ImageTrackerMode) -> ImageTracker
public static ImageTracker createWithMode(ImageTrackerMode trackMode)

매개 변수

이름 형식 설명
trackMode ImageTrackerMode

반환 값

형식 설명
ImageTracker

createWithConfig

특정 구성으로 생성.

void easyar_ImageTracker_createWithConfig(easyar_ImageTrackerConfig * config, easyar_ImageTracker * * Return)
static std::shared_ptr<ImageTracker> createWithConfig(std::shared_ptr<ImageTrackerConfig> config)
public static @Nonnull ImageTracker createWithConfig(@Nonnull ImageTrackerConfig config)
companion object fun createWithConfig(config: ImageTrackerConfig): ImageTracker
+ (easyar_ImageTracker *)createWithConfig:(easyar_ImageTrackerConfig *)config
public static func createWithConfig(_ config: ImageTrackerConfig) -> ImageTracker
public static ImageTracker createWithConfig(ImageTrackerConfig config)

매개 변수

이름 형식 설명
config ImageTrackerConfig

반환 값

형식 설명
ImageTracker

setResultPostProcessing

결과 후처리 설정. enablePersistentTargetInstance의 기본값은 false이며, 활성화 시 InputFrame 데이터에 공간 정보가 포함된 경우 ImageTrackerResult의 targetInstances에는 인식된 모든 인스턴스(현재 추적되지 않는 것 포함)가 포함됩니다. enableMotionFusion의 기본값은 false이며, 활성화 시 InputFrame 데이터에 시간 정보와 공간 정보가 포함된 경우 ImageTrackerResult의 targetInstances 포즈는 RealTimeCoordinateTransform을 사용하여 처리됩니다.

void easyar_ImageTracker_setResultPostProcessing(easyar_ImageTracker * 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_ImageTracker_setResultAsyncMode(easyar_ImageTracker * 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_ImageTracker_start(easyar_ImageTracker * This)
bool start()
public boolean start()
fun start(): Boolean
- (bool)start
public func start() -> Bool
public virtual bool start()

반환 값

형식 설명
Boolean

stop

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

void easyar_ImageTracker_stop(easyar_ImageTracker * This)
void stop()
public void stop()
fun stop(): Unit
- (void)stop
public func stop() -> Void
public virtual void stop()

반환 값

형식 설명
Void

close

닫기. close 후에는 계속 사용해서는 안 됩니다.

void easyar_ImageTracker_close(easyar_ImageTracker * 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_ImageTracker_loadTarget(easyar_ImageTracker * 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_ImageTracker_unloadTarget(easyar_ImageTracker * 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_ImageTracker_targets(const easyar_ImageTracker * 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_ImageTracker_setSimultaneousNum(easyar_ImageTracker * 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_ImageTracker_simultaneousNum(const easyar_ImageTracker * This)
int simultaneousNum()
public int simultaneousNum()
fun simultaneousNum(): Int
- (int)simultaneousNum
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()

반환 값

형식 설명
Int32

getSyncResult

동기화 출력 결과를 얻습니다. ImageTracker가 일시정지되었거나 setResultAsyncMode를 통해 결과 비동기 모드가 false로 설정되지 않은 경우 반환 값은 비어 있습니다.

void easyar_ImageTracker_getSyncResult(easyar_ImageTracker * This, easyar_MotionInputData * motionInputData, easyar_OptionalOfImageTrackerResult * Return)
std::optional<std::shared_ptr<ImageTrackerResult>> getSyncResult(std::shared_ptr<MotionInputData> motionInputData)
public @Nullable ImageTrackerResult getSyncResult(@Nonnull MotionInputData motionInputData)
fun getSyncResult(motionInputData: MotionInputData): ImageTrackerResult?
- (easyar_ImageTrackerResult *)getSyncResult:(easyar_MotionInputData *)motionInputData
public func getSyncResult(_ motionInputData: MotionInputData) -> ImageTrackerResult?
public virtual Optional<ImageTrackerResult> getSyncResult(MotionInputData motionInputData)

매개 변수

이름 형식 설명
motionInputData MotionInputData

반환 값

형식 설명
Optional<ImageTrackerResult>