Class ObjectTracker
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
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 입력 포트입니다. 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()
반환 값
bufferRequirement
현재 컴포넌트가 차지하는 camera buffer 수입니다.
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
결과 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 |
|
반환 값
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 |
|
반환 값
start
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
반환 값
stop
tracking 알고리즘을 일시 중지합니다. start를 호출하여 tracking을 다시 시작합니다.
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은 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)
매개 변수
반환 값
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)
매개 변수
반환 값
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()
반환 값
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)
매개 변수
반환 값
simultaneousNum
tracker가 tracking할 수 있는 최대 target 수를 가져옵니다. 기본값은 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를 통해 결과 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)
매개 변수
반환 값