tof — uçuş süresi sensörü sürücüsü¶
tof modülü, bir OpenMV Cam’e I2C üzerinden bağlı uçuş süresi (ToF) mesafe ölçüm sensörlerini sürer. Her çerçeve, 8x8 bölge ızgarası (VL53L5CX / VL53L8CX) için piksel başına milimetre cinsinden bir derinlik değeri döndürür; bu değer snapshot() ile bağımsız bir derinlik görüntüsü olarak işlenebilir veya genellikle image.PALETTE_DEPTH gibi bir renk paleti aracılığıyla draw_depth() ile CSI sensöründen alınan görünür ışık çerçevesi üzerine bindirilebilir.
Örnek kullanım:
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)
Derinlik dizisini/görüntüsünü 90 derecenin katları kadar döndürmek istiyorsanız, read_depth, draw_depth veya snapshot öğelerine aşağıdaki hmirror/vflip/transpose kombinasyonlarını iletin:
vflip=False, hmirror=False, transpose=False-> 0 derece döndürme
vflip=True, hmirror=False, transpose=True-> 90 derece döndürme
vflip=True, hmirror=True, transpose=False-> 180 derece döndürme
vflip=False, hmirror=True, transpose=True-> 270 derece döndürme
İşlevler¶
- tof.init(type: int = -1) None¶
Yerleşik bir derinlik sensörünü başlatır.
typeTOF sensörünün türünü belirtir:tof.TOF_VL53LX: 8x8 piksel.
Varsayılan olarak
typedeğeri-1olup, bu datof.init()öğesinin I2C adresine göre bağlı bir TOF sensörünü otomatik olarak taramasına ve başlatmasına neden olur.
- tof.width() int¶
Kullanımdaki derinlik sensörünün genişliğini (yatay çözünürlük) döndürür. Sensör başlatılmamışsa bir
RuntimeErroroluşturur.
- tof.height() int¶
Kullanımdaki derinlik sensörünün yüksekliğini (dikey çözünürlük) döndürür. Sensör başlatılmamışsa bir
RuntimeErroroluşturur.
- tof.type() int¶
Kullanımdaki derinlik sensörünün türünü döndürür:
Sensör başlatılmamışsa bir
RuntimeErroroluşturur.
- tof.refresh() int¶
Kullanımdaki derinlik sensörünün yenileme hızını (Hz cinsinden) döndürür:
tof.TOF_VL53LX: 15 Hz.
Sensör başlatılmamışsa bir
RuntimeErroroluşturur.
- tof.read_depth(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = 100) Tuple[List[float], float, float]¶
Derinlik listesini (mm cinsinden
width * heightadet float), görülen minimum derinliği ve görülen maksimum derinliği içeren bir demet döndürür.hmirroreğerTrueise derinlik dizisini yatay olarak yansıtır.vflipeğerTrueise derinlik dizisini dikey olarak çevirir.transposeeğerTrueise derinlik dizisinin devriğini alır.timeoutyeni çerçeve için birRuntimeErroroluşturmadan önce kaç milisaniye bekleneceğini belirtir.0ise sonsuza kadar bekler.
- 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¶
Bir
depthdizisini (read_depthtarafından döndürüldüğü gibi) sol üst köşesix,ykonumundan başlayacak şekildeimageüzerine çizer.x_scalegörüntülenen görüntünün x yönünde ne kadar ölçekleneceğini kontrol eder (float). Bu değer negatifse görüntü yatay olarak çevrilir. Belirtilmezse en boy oranını korumak içiny_scaleile eşleşir.y_scalegörüntülenen görüntünün y yönünde ne kadar ölçekleneceğini kontrol eder (float). Bu değer negatifse görüntü dikey olarak çevrilir. Belirtilmezse en boy oranını korumak içinx_scaleile eşleşir.roiçizilecek kaynak derinlik dizisinin ilgi bölgesi dikdörtgeni demetidir(x, y, w, h).rgb_channelkaynaktan çıkarılacak RGB kanalıdır (0=R, 1=G, 2=B).-1(varsayılan) tüm kanalları kullanır.alphakaynağın hedef görüntüye ne kadar karıştırılacağını kontrol eder.255opaktır,0herhangi bir değişiklik yapmaz. Aralık: 0-255.color_palettebir renk paleti enum’u (örneğinimage.PALETTE_DEPTH,image.PALETTE_RAINBOW) veya gri tonlama derinlik değeri üzerinde renk arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsüdür.alpha_paletteNonedeğilse, piksel başınaalphadeğerini modüle eden alfa arama tablosu olarak kullanılan 256 piksellik bir GRAYSCALE görüntüsüdür.hintaşağıdakilerin mantıksal VEYA işlemidir:image.AREA: Küçültme yaparken alan ölçeklemesi kullanır.image.BILINEAR: Çift doğrusal ölçekleme kullanır.image.BICUBIC: Çift kübik ölçekleme kullanır.image.CENTER: Görüntüyü hedefte ortalar.image.HMIRROR: Yatay olarak yansıtır.image.VFLIP: Dikey olarak çevirir.image.TRANSPOSE: Devrik alır (x/y’yi değiştirir).image.EXTRACT_RGB_CHANNEL_FIRST: rgb_channel çıkarmasını ölçeklemeden önce uygular.image.APPLY_COLOR_PALETTE_FIRST: Renk paletini ölçeklemeden önce uygular.image.SCALE_ASPECT_KEEP: En boy oranını koruyarak hedefin içine sığdırır.image.SCALE_ASPECT_EXPAND: En boy oranını koruyarak hedefi doldurur (kırparak).image.SCALE_ASPECT_IGNORE: En boy oranını yok sayarak hedefi doldurur (gererek).image.ROTATE_90: 90 derece döndürür.image.ROTATE_180: 180 derece döndürür.image.ROTATE_270: 270 derece döndürür.
scalederinlik görüntüsünü ölçeklemek için kullanılan minimum ve maksimum derinliği (mm cinsinden) kontrol eden iki değerli bir demettir(min, max). Varsayılan olarak derinlik dizisinin gerçek min ve max değerleridir.Not
read_depth,transpose=Trueile çağrılıp çağrılmadığını hatırlar vedraw_depthkaynak diziyi boyutlandırmak için bunu dahili olarak kullanır.
- 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¶
Derinlik sensöründen bir çerçeve okur ve
image.GRAYSCALEveyaimage.RGB565türünde yeni birimage.Imagenesnesi döndürür.hmirroreğerTrueise yeni görüntüyü yatay olarak yansıtır.vflipeğerTrueise yeni görüntüyü dikey olarak çevirir.transposeeğerTrueise yeni görüntünün devriğini alır.x_scalegörüntünün x yönünde ne kadar ölçekleneceğini kontrol eder (float). Negatif değerler yatay olarak çevirir. Belirtilmezsey_scaleile eşleşir.y_scalegörüntünün y yönünde ne kadar ölçekleneceğini kontrol eder (float). Negatif değerler dikey olarak çevirir. Belirtilmezsex_scaleile eşleşir.roiçıkarılacak kaynağın ilgi bölgesi dikdörtgeni demetidir(x, y, w, h).rgb_channelçıkarılacak RGB kanalıdır (0=R, 1=G, 2=B).-1(varsayılan) tüm kanalları kullanır.alphakaynaktan hedefe karıştırmayı kontrol eder.255opaktır,0hedefi değiştirmeden bırakır. Aralık: 0-255.color_palettebir renk paleti enum’u (örneğinimage.PALETTE_DEPTH) veya renk arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsüdür.alpha_paletteNonedeğilse, alfa arama tablosu olarak kullanılan 256 piksellik bir GRAYSCALE görüntüsüdür.hintaşağıdakilerin mantıksal VEYA işlemidir:image.AREA: Küçültme yaparken alan ölçeklemesi kullanır.image.BILINEAR: Çift doğrusal ölçekleme kullanır.image.BICUBIC: Çift kübik ölçekleme kullanır.image.CENTER: Görüntüyü hedefte ortalar.image.HMIRROR: Yatay olarak yansıtır.image.VFLIP: Dikey olarak çevirir.image.TRANSPOSE: Devrik alır (x/y’yi değiştirir).image.EXTRACT_RGB_CHANNEL_FIRST: rgb_channel çıkarmasını ölçeklemeden önce uygular.image.APPLY_COLOR_PALETTE_FIRST: Renk paletini ölçeklemeden önce uygular.image.SCALE_ASPECT_KEEP: En boy oranını koruyarak hedefin içine sığdırır.image.SCALE_ASPECT_EXPAND: En boy oranını koruyarak hedefi doldurur (kırparak).image.SCALE_ASPECT_IGNORE: En boy oranını yok sayarak hedefi doldurur (gererek).image.ROTATE_90: 90 derece döndürür.image.ROTATE_180: 180 derece döndürür.image.ROTATE_270: 270 derece döndürür.
scalegörüntüyü ölçeklemek için kullanılan minimum ve maksimum derinliği (mm cinsinden) kontrol eden iki değerli bir demettir(min, max). Varsayılan olarak çerçevenin gerçek min/max değerleridir.pixformatson görüntü piksel formatını kontrol eder.image.GRAYSCALEveyaimage.RGB565olmalıdır.copy_to_fbeğerTrueise yeni görüntüyü MicroPython yığınında tahsis etmek yerine çerçeve arabelleğine yazar.timeoutyeni çerçeve için birRuntimeErroroluşturmadan önce kaç milisaniye bekleneceğini belirtir.0ise sonsuza kadar bekler.