Table of Contents

Class ImageTracker

命名空間
easyar

ImageTracker實現了平面卡片的檢測和追蹤。 ImageTracker佔用(1 + SimultaneousNum)個camera的緩衝區。應使用camera的setBufferCapacity設置不少於所有元件佔用的camera緩衝區數量。 建立之後,可以呼叫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成員要求必須擁有影像、時間戳和camera參數,camera支援針孔和魚眼相機。

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

當前元件佔用camera緩衝區的數量。

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會包含所有識別到的instance(包括當前未追蹤的)。 enableMotionFusion預設為false,開啟時,如果 InputFrame 資料中包含時間資訊和空間資訊,則 ImageTrackerResult 中的 targetInstances 的 pose 會使用 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

載入一個 Target 進入tracker。 Target 只有在成功載入進入tracker之後才能被識別和追蹤。 這個方法是非同步方法。載入過程可能會需要一些時間來完成,這段時間內新目標和遺失目標的檢測可能會花比平時更多的時間,但是檢測到之後的追蹤不受影響。如果你希望知道載入的結果,需要處理callback資料。callback將會在 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。 這個方法是非同步方法。卸載過程可能會需要一些時間來完成,這段時間內新目標和遺失目標的檢測可能會花比平時更多的時間,但是檢測到之後的追蹤不受影響。如果你希望知道卸載的結果,需要處理callback資料。callback將會在 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

返回當前已經被載入進入tracker的目標。如果非同步的載入/卸載正在執行,在載入/卸載完成之前的返回值將不會反映這些載入/卸載的結果。

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

設定最大可被tracker追蹤的目標個數。預設值為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

取得最大可被tracker追蹤的目標個數。預設值為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>