Class ObjectTracker
ObjectTracker mengimplementasikan deteksi dan pelacakan target objek 3D.
ObjectTracker memakan buffer kamera sebanyak (1 + SimultaneousNum). Gunakan setBufferCapacity kamera untuk mengatur tidak kurang dari jumlah buffer kamera yang digunakan oleh semua komponen.
Setelah dibuat, dapat memanggil start/stop untuk memulai dan menghentikan operasi. Panggilan start/stop sangatlah ringan.
Saat komponen tidak diperlukan lagi, panggil close untuk menutupnya. Setelah close, tidak boleh digunakan lagi.
ObjectTracker menerima input melalui feedbackFrameSink FeedbackFrame. Hubungkan FeedbackFrameSource ke feedbackFrameSink untuk penggunaan.
Sebelum Target dapat dilacak oleh ObjectTracker, Anda perlu memuatnya melalui loadTarget/unloadTarget. Hasil load/unload dapat diperoleh melalui callback yang diteruskan ke antarmuka.
ObjectTracker
Metode
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()
Mengembalikan
feedbackFrameSink
Port input FeedbackFrame. Anggota InputFrame dalam FeedbackFrame wajib memiliki gambar, timestamp, dan parameter kamera. Kamera mendukung model pinhole dan 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()
Mengembalikan
bufferRequirement
Jumlah buffer kamera yang saat ini digunakan oleh komponen ini.
int easyar_ObjectTracker_bufferRequirement(easyar_ObjectTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
Mengembalikan
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()
Mengembalikan
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()
Mengembalikan
setResultPostProcessing
Mengatur pascaproses hasil.
enablePersistentTargetInstance defaultnya false. Saat diaktifkan, jika data InputFrame mengandung informasi spasial, targetInstances dalam ImageTrackerResult akan menyertakan semua instance yang terdeteksi (termasuk yang tidak sedang dilacak).
enableMotionFusion defaultnya false. Saat diaktifkan, jika data InputFrame mengandung informasi waktu dan spasial, pose targetInstances dalam ImageTrackerResult akan mengalami pemrosesan halus menggunakan 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)
Parameter
| Nama |
Tipe |
Deskripsi |
| enablePersistentTargetInstance |
Boolean |
|
| enableMotionFusion |
Boolean |
|
Mengembalikan
setResultAsyncMode
Mengatur mode hasil asinkron. Jika hasil dikeluarkan melalui outputFrameSource, setel ke true. Jika hasil diperoleh melalui getSyncResult, setel ke false. Default enableAsync adalah true. Mode sinkron hanya berlaku jika bingkai input mengandung informasi spasial dan menggunakan Lisensi XR.
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)
Parameter
| Nama |
Tipe |
Deskripsi |
| enableAsync |
Boolean |
|
Mengembalikan
start
Memulai algoritma pelacakan.
bool easyar_ObjectTracker_start(easyar_ObjectTracker * This)
public func start() -> Bool
public virtual bool start()
Mengembalikan
stop
Menjeda algoritma pelacakan. Panggil start untuk memulai ulang pelacakan.
void easyar_ObjectTracker_stop(easyar_ObjectTracker * This)
public func stop() -> Void
public virtual void stop()
Mengembalikan
close
Menutup. Setelah close, tidak boleh digunakan lagi.
void easyar_ObjectTracker_close(easyar_ObjectTracker * This)
public func close() -> Void
public virtual void close()
Mengembalikan
loadTarget
Memuat satu Target ke dalam tracker. Target hanya dapat dikenali dan dilacak setelah berhasil dimuat ke tracker.
Metode ini asinkron. Proses pemuatan mungkin memerlukan waktu. Selama ini, deteksi target baru/hilang mungkin lebih lama dari biasa, tetapi pelacakan setelah deteksi tidak terpengaruh. Untuk mengetahui hasil pemuatan, proses data callback. Callback akan dipanggil pada thread yang ditentukan CallbackScheduler. Thread pelacakan dan operasi lain (selain load/unload) tidak akan terblokir.
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)
Parameter
Mengembalikan
unloadTarget
Membongkar Target dari tracker.
Metode ini asinkron. Proses pembongkaran mungkin memerlukan waktu. Selama ini, deteksi target baru/hilang mungkin lebih lama dari biasa, tetapi pelacakan setelah deteksi tidak terpengaruh. Untuk mengetahui hasil pembongkaran, proses data callback. Callback akan dipanggil pada thread yang ditentukan CallbackScheduler. Thread pelacakan dan operasi lain (selain load/unload) tidak akan terblokir.
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)
Parameter
Mengembalikan
targets
Mengembalikan target yang saat ini telah dimuat ke dalam tracker. Jika load/unload asinkron sedang berjalan, nilai kembalian sebelum selesai tidak akan mencerminkan hasilnya.
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()
Mengembalikan
setSimultaneousNum
Mengatur jumlah target maksimum yang dapat dilacak oleh tracker. Nilai default adalah 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)
Parameter
| Nama |
Tipe |
Deskripsi |
| num |
Int32 |
|
Mengembalikan
simultaneousNum
Mendapatkan jumlah target maksimum yang dapat dilacak oleh tracker. Nilai default adalah 1.
int easyar_ObjectTracker_simultaneousNum(const easyar_ObjectTracker * This)
public int simultaneousNum()
fun simultaneousNum(): Int
public func simultaneousNum() -> Int32
public virtual int simultaneousNum()
Mengembalikan
getSyncResult
Mendapatkan hasil output sinkron. Mengembalikan kosong jika ObjectTracker dijeda, atau mode hasil asinkron tidak disetel ke false melalui setResultAsyncMode.
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)
Parameter
Mengembalikan