tof --- driver sensor time-of-flight¶
Modul tof menggerakkan sensor ranging time-of-flight (ToF) yang terhubung ke OpenMV Cam melalui I2C. Setiap bingkai mengembalikan nilai kedalaman per piksel dalam milimeter untuk grid zona 8x8 (VL53L5CX / VL53L8CX), yang dapat dirender sebagai citra kedalaman mandiri dengan snapshot() atau digabungkan ke bingkai cahaya tampak dari sensor CSI dengan draw_depth(), biasanya melalui palet warna seperti image.PALETTE_DEPTH.
Contoh penggunaan:
import csi
import tof
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
tof.init()
while True:
img = csi0.snapshot()
depth, depth_min, depth_max = tof.read_depth()
tof.draw_depth(img, depth)
print("====================")
print("Min depth in mm seen: %0.2f" % depth_min)
print("Max depth in mm seen: %0.2f" % depth_max)
Jika Anda ingin memutar array/citra kedalaman dengan kelipatan 90 derajat, berikan kombinasi hmirror/vflip/transpose berikut ke read_depth, draw_depth, atau snapshot:
vflip=False, hmirror=False, transpose=False-> rotasi 0 derajat
vflip=True, hmirror=False, transpose=True-> rotasi 90 derajat
vflip=True, hmirror=True, transpose=False-> rotasi 180 derajat
vflip=False, hmirror=True, transpose=True-> rotasi 270 derajat
Fungsi¶
- tof.init(type: int = -1) None¶
Menginisialisasi sensor kedalaman onboard.
typemenunjukkan jenis sensor TOF:tof.TOF_VL53LX: 8x8 piksel.
Secara default
typeadalah-1yang menyebabkantof.init()secara otomatis memindai dan menginisialisasi sensor TOF yang terpasang berdasarkan alamat I2C.
- tof.width() int¶
Mengembalikan lebar (resolusi horizontal) sensor kedalaman yang sedang digunakan. Memunculkan
RuntimeErrorjika sensor tidak diinisialisasi.
- tof.height() int¶
Mengembalikan tinggi (resolusi vertikal) sensor kedalaman yang sedang digunakan. Memunculkan
RuntimeErrorjika sensor tidak diinisialisasi.
- tof.type() int¶
Mengembalikan jenis sensor kedalaman yang sedang digunakan:
Memunculkan
RuntimeErrorjika sensor tidak diinisialisasi.
- tof.refresh() int¶
Mengembalikan laju penyegaran (dalam Hz) sensor kedalaman yang sedang digunakan:
tof.TOF_VL53LX: 15 Hz.
Memunculkan
RuntimeErrorjika sensor tidak diinisialisasi.
- tof.read_depth(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = 100) Tuple[List[float], float, float]¶
Mengembalikan tuple yang berisi daftar kedalaman (
width * heightfloat dalam mm), kedalaman minimum yang terlihat, dan kedalaman maksimum yang terlihat.hmirrorjikaTruemencerminkan array kedalaman secara horizontal.vflipjikaTruemembalik array kedalaman secara vertikal.transposejikaTruemelakukan transpose pada array kedalaman.timeoutberapa milidetik untuk menunggu bingkai baru sebelum memunculkanRuntimeError. Jika0menunggu selamanya.
- tof.draw_depth(image: image.Image, depth: List[float], x: int = 0, y: int = 0, x_scale: float | None = None, y_scale: float | None = None, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int = image.PALETTE_DEPTH, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None) None¶
Menggambar array
depth(seperti yang dikembalikan olehread_depth) keimageyang pojok kiri atasnya dimulai dari lokasix,y.x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dicerminkan secara horizontal. Jika tidak ditentukan, nilainya mengikutiy_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Jika tidak ditentukan, nilainya mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tuple persegi panjang wilayah yang diminati(x, y, w, h)dari array kedalaman sumber yang akan digambar.rgb_channeladalah kanal RGB (0=R, 1=G, 2=B) yang diekstrak dari sumber.-1(default) menggunakan semua kanal.alphamengontrol seberapa banyak sumber yang dicampur ke citra tujuan.255adalah buram,0tidak menghasilkan modifikasi. Rentang: 0-255.color_paletteadalah enum palet warna (mis.image.PALETTE_DEPTH,image.PALETTE_RAINBOW) atau citra RGB565 256-piksel yang digunakan sebagai tabel pencarian warna pada nilai kedalaman skala abu-abu.alpha_palettejika tidakNoneadalah citra GRAYSCALE 256-piksel yang digunakan sebagai tabel pencarian alpha yang memodulasialphaper piksel.hintadalah OR logis dari:image.AREA: Gunakan penskalaan area saat memperkecil.image.BILINEAR: Gunakan penskalaan bilinear.image.BICUBIC: Gunakan penskalaan bikubik.image.CENTER: Pusatkan citra pada tujuan.image.HMIRROR: Cerminkan secara horizontal.image.VFLIP: Balik secara vertikal.image.TRANSPOSE: Transpose (tukar x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Terapkan ekstraksi rgb_channel sebelum penskalaan.image.APPLY_COLOR_PALETTE_FIRST: Terapkan palet warna sebelum penskalaan.image.SCALE_ASPECT_KEEP: Sesuaikan di dalam tujuan dengan mempertahankan rasio aspek.image.SCALE_ASPECT_EXPAND: Isi tujuan dengan mempertahankan rasio aspek (memotong).image.SCALE_ASPECT_IGNORE: Isi tujuan dengan mengabaikan rasio aspek (meregangkan).image.ROTATE_90: Putar 90 derajat.image.ROTATE_180: Putar 180 derajat.image.ROTATE_270: Putar 270 derajat.
scaleadalah tuple dua nilai(min, max)yang mengontrol kedalaman minimum dan maksimum (dalam mm) yang digunakan untuk menskalakan citra kedalaman. Default ke nilai min dan maks aktual array kedalaman.Catatan
read_depthmengingat apakah dipanggil dengantranspose=Truedandraw_depthmenggunakannya secara internal untuk menentukan ukuran array sumber.
- tof.snapshot(hmirror: bool = False, vflip: bool = False, transpose: bool = False, x_scale: float | None = None, y_scale: float | None = None, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int = image.PALETTE_DEPTH, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None, pixformat: int = image.RGB565, copy_to_fb: bool = False, timeout: int = 100) image.Image¶
Membaca bingkai dari sensor kedalaman dan mengembalikan objek
image.Imagebaru yang berformatimage.GRAYSCALEatauimage.RGB565.hmirrorjikaTruemencerminkan citra baru secara horizontal.vflipjikaTruemembalik citra baru secara vertikal.transposejikaTruemelakukan transpose pada citra baru.x_scalemengontrol seberapa besar citra diskalakan dalam arah x (float). Nilai negatif membalik secara horizontal. Jika tidak ditentukan, nilainya mengikutiy_scale.y_scalemengontrol seberapa besar citra diskalakan dalam arah y (float). Nilai negatif membalik secara vertikal. Jika tidak ditentukan, nilainya mengikutix_scale.roiadalah tuple persegi panjang wilayah yang diminati(x, y, w, h)dari sumber yang akan diekstrak.rgb_channeladalah kanal RGB (0=R, 1=G, 2=B) yang diekstrak.-1(default) menggunakan semua kanal.alphamengontrol pencampuran sumber-ke-tujuan.255adalah buram,0membiarkan tujuan tidak berubah. Rentang: 0-255.color_paletteadalah enum palet warna (mis.image.PALETTE_DEPTH) atau citra RGB565 256-piksel yang digunakan sebagai tabel pencarian warna.alpha_palettejika tidakNoneadalah citra GRAYSCALE 256-piksel yang digunakan sebagai tabel pencarian alpha.hintadalah OR logis dari:image.AREA: Gunakan penskalaan area saat memperkecil.image.BILINEAR: Gunakan penskalaan bilinear.image.BICUBIC: Gunakan penskalaan bikubik.image.CENTER: Pusatkan citra pada tujuan.image.HMIRROR: Cerminkan secara horizontal.image.VFLIP: Balik secara vertikal.image.TRANSPOSE: Transpose (tukar x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Terapkan ekstraksi rgb_channel sebelum penskalaan.image.APPLY_COLOR_PALETTE_FIRST: Terapkan palet warna sebelum penskalaan.image.SCALE_ASPECT_KEEP: Sesuaikan di dalam tujuan dengan mempertahankan rasio aspek.image.SCALE_ASPECT_EXPAND: Isi tujuan dengan mempertahankan rasio aspek (memotong).image.SCALE_ASPECT_IGNORE: Isi tujuan dengan mengabaikan rasio aspek (meregangkan).image.ROTATE_90: Putar 90 derajat.image.ROTATE_180: Putar 180 derajat.image.ROTATE_270: Putar 270 derajat.
scaleadalah tuple dua nilai(min, max)yang mengontrol kedalaman minimum dan maksimum (dalam mm) yang digunakan untuk menskalakan citra. Default ke nilai min/maks aktual bingkai.pixformatmengontrol format piksel citra akhir. Harus berupaimage.GRAYSCALEatauimage.RGB565.copy_to_fbjikaTruemenulis citra baru ke dalam buffer bingkai alih-alih mengalokasikannya di heap MicroPython.timeoutberapa milidetik untuk menunggu bingkai baru sebelum memunculkanRuntimeError. Jika0menunggu selamanya.