Class ImageTracker
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
bool easyar_ImageTracker_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 입력 포트. 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()
반환 값
bufferRequirement
현재 구성 요소가 카메라 버퍼를 점유하는 수량.
int easyar_ImageTracker_bufferRequirement(easyar_ImageTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
반환 값
outputFrameSource
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()
반환 값
create
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()
반환 값
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)
매개 변수
반환 값
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)
매개 변수
반환 값
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 |
|
반환 값
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 |
|
반환 값
start
bool easyar_ImageTracker_start(easyar_ImageTracker * This)
public func start() -> Bool
public virtual bool start()
반환 값
stop
추적 알고리즘을 일시 중지합니다. 재시작하려면 start를 호출하세요.
void easyar_ImageTracker_stop(easyar_ImageTracker * This)
public func stop() -> Void
public virtual void stop()
반환 값
close
닫기. close 후에는 계속 사용해서는 안 됩니다.
void easyar_ImageTracker_close(easyar_ImageTracker * This)
public func close() -> Void
public virtual void close()
반환 값
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)
매개 변수
반환 값
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)
매개 변수
반환 값
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()
반환 값
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)
매개 변수
반환 값
simultaneousNum
추적 가능한 대상의 최대 개수를 가져옵니다. 기본값은 1입니다.
int easyar_ImageTracker_simultaneousNum(const easyar_ImageTracker * This)
public int simultaneousNum()
fun simultaneousNum(): Int
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()
반환 값
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)
매개 변수
반환 값