tof — time-of-flight-sensorin ohjain¶
Moduuli tof ohjaa time-of-flight (ToF) -etäisyyssensoreita, jotka on liitetty OpenMV Cam -kameraan I2C:n kautta. Jokainen kehys palauttaa pikselikohtaisen syvyysarvon millimetreinä 8x8-vyöhykeruudukolle (VL53L5CX / VL53L8CX), joka voidaan esittää erillisenä syvyyskuvana funktiolla snapshot() tai yhdistää CSI-sensorin näkyvän valon kehykseen funktiolla draw_depth(), yleensä väripaletin kuten image.PALETTE_DEPTH kautta.
Esimerkkikäyttö:
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)
Jos haluat kiertää syvyystaulukkoa/kuvaa 90 asteen monikertoina, anna seuraavat hmirror/vflip/transpose-yhdistelmät funktiolle read_depth, draw_depth tai snapshot:
vflip=False, hmirror=False, transpose=False-> 0 asteen kierto
vflip=True, hmirror=False, transpose=True-> 90 asteen kierto
vflip=True, hmirror=True, transpose=False-> 180 asteen kierto
vflip=False, hmirror=True, transpose=True-> 270 asteen kierto
Funktiot¶
- tof.init(type: int = -1) None¶
Alustaa sisäisen syvyyssensorin.
typeilmaisee TOF-sensorin tyypin:tof.TOF_VL53LX: 8x8 pikseliä.
Oletuksena
typeon-1, mikä saa funktiontof.init()automaattisesti etsimään ja alustamaan liitetyn TOF-sensorin sen I2C-osoitteen perusteella.
- tof.width() int¶
Palauttaa käytössä olevan syvyyssensorin leveyden (vaakaresoluution). Nostaa
RuntimeError-poikkeuksen, jos sensoria ei ole alustettu.
- tof.height() int¶
Palauttaa käytössä olevan syvyyssensorin korkeuden (pystyresoluution). Nostaa
RuntimeError-poikkeuksen, jos sensoria ei ole alustettu.
- tof.type() int¶
Palauttaa käytössä olevan syvyyssensorin tyypin:
Nostaa
RuntimeError-poikkeuksen, jos sensoria ei ole alustettu.
- tof.refresh() int¶
Palauttaa käytössä olevan syvyyssensorin päivitystaajuuden (hertseinä):
tof.TOF_VL53LX: 15 Hz.
Nostaa
RuntimeError-poikkeuksen, jos sensoria ei ole alustettu.
- tof.read_depth(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = 100) Tuple[List[float], float, float]¶
Palauttaa monikon, joka sisältää syvyyslistan (
width * heightliukulukua millimetreinä), havaitun minimisyvyyden ja havaitun maksimisyvyyden.hmirrorjosTrue, peilaa syvyystaulukon vaakasuunnassa.vflipjosTrue, kääntää syvyystaulukon pystysuunnassa.transposejosTrue, transponoi syvyystaulukon.timeoutkuinka monta millisekuntia odotetaan uutta kehystä ennenRuntimeError-poikkeuksen nostamista. Jos0, odotetaan ikuisesti.
- 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¶
Piirtää
depth-taulukon (sellaisena kuin funktioread_depthpalauttaa) kuvaanimage, jonka vasen yläkulma alkaa sijainnistax,y.x_scaleohjaa, kuinka paljon näytettävää kuvaa skaalataan x-suunnassa (liukuluku). Jos arvo on negatiivinen, kuva peilataan vaakasuunnassa. Jos arvoa ei ole määritetty, se vastaay_scale-arvoa kuvasuhteen säilyttämiseksi.y_scaleohjaa, kuinka paljon näytettävää kuvaa skaalataan y-suunnassa (liukuluku). Jos arvo on negatiivinen, kuva peilataan pystysuunnassa. Jos arvoa ei ole määritetty, se vastaax_scale-arvoa kuvasuhteen säilyttämiseksi.roion lähdesyvyystaulukon piirrettävä kohdealueen suorakulmiomonikko(x, y, w, h).rgb_channelon RGB-kanava (0=R, 1=G, 2=B), joka poimitaan lähteestä.-1(oletus) käyttää kaikkia kanavia.alphaohjaa, kuinka paljon lähteestä sekoitetaan kohdekuvaan.255on läpinäkymätön,0ei muuta kuvaa lainkaan. Alue: 0-255.color_paletteon väripaletin enum-arvo (esim.image.PALETTE_DEPTH,image.PALETTE_RAINBOW) tai 256 pikselin RGB565-kuva, jota käytetään värihakutauluna harmaasävyiselle syvyysarvolle.alpha_palettejos eiNone, on 256 pikselin GRAYSCALE-kuva, jota käytetään alfahakutauluna moduloimaanalpha-arvoa pikselikohtaisesti.hinton looginen TAI seuraavista:image.AREA: Käytä aluepohjaista skaalausta pienennettäessä.image.BILINEAR: Käytä bilineaarista skaalausta.image.BICUBIC: Käytä bikuubista skaalausta.image.CENTER: Keskitä kuva kohteeseen.image.HMIRROR: Peilaa vaakasuunnassa.image.VFLIP: Käännä pystysuunnassa.image.TRANSPOSE: Transponoi (vaihda x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Suorita rgb_channel-poiminta ennen skaalausta.image.APPLY_COLOR_PALETTE_FIRST: Suorita väripaletti ennen skaalausta.image.SCALE_ASPECT_KEEP: Sovita kohteen sisään kuvasuhde säilyttäen.image.SCALE_ASPECT_EXPAND: Täytä kohde kuvasuhde säilyttäen (rajaa).image.SCALE_ASPECT_IGNORE: Täytä kohde kuvasuhdetta huomioimatta (venyttää).image.ROTATE_90: Kierrä 90 astetta.image.ROTATE_180: Kierrä 180 astetta.image.ROTATE_270: Kierrä 270 astetta.
scaleon kaksiarvoinen monikko(min, max), joka ohjaa syvyyskuvan skaalaukseen käytettävää minimi- ja maksimisyvyyttä (millimetreinä). Oletuksena syvyystaulukon todellinen minimi ja maksimi.Muista
read_depthmuistaa, kutsuttiinko sitä arvollatranspose=True, jadraw_depthkäyttää tätä sisäisesti lähdetaulukon koon määrittämiseen.
- 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¶
Lukee kehyksen syvyyssensorilta ja palauttaa uuden
image.Image-objektin, joka on jokoimage.GRAYSCALEtaiimage.RGB565.hmirrorjosTrue, peilaa uuden kuvan vaakasuunnassa.vflipjosTrue, kääntää uuden kuvan pystysuunnassa.transposejosTrue, transponoi uuden kuvan.x_scaleohjaa, kuinka paljon kuvaa skaalataan x-suunnassa (liukuluku). Negatiiviset arvot peilaavat vaakasuunnassa. Jos arvoa ei ole määritetty, se vastaay_scale-arvoa.y_scaleohjaa, kuinka paljon kuvaa skaalataan y-suunnassa (liukuluku). Negatiiviset arvot peilaavat pystysuunnassa. Jos arvoa ei ole määritetty, se vastaax_scale-arvoa.roion poimittavan lähteen kohdealueen suorakulmiomonikko(x, y, w, h).rgb_channelon poimittava RGB-kanava (0=R, 1=G, 2=B).-1(oletus) käyttää kaikkia kanavia.alphaohjaa lähteen ja kohteen välistä sekoitusta.255on läpinäkymätön,0jättää kohteen ennalleen. Alue: 0-255.color_paletteon väripaletin enum-arvo (esim.image.PALETTE_DEPTH) tai 256 pikselin RGB565-kuva, jota käytetään värihakutauluna.alpha_palettejos eiNone, on 256 pikselin GRAYSCALE-kuva, jota käytetään alfahakutauluna.hinton looginen TAI seuraavista:image.AREA: Käytä aluepohjaista skaalausta pienennettäessä.image.BILINEAR: Käytä bilineaarista skaalausta.image.BICUBIC: Käytä bikuubista skaalausta.image.CENTER: Keskitä kuva kohteeseen.image.HMIRROR: Peilaa vaakasuunnassa.image.VFLIP: Käännä pystysuunnassa.image.TRANSPOSE: Transponoi (vaihda x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Suorita rgb_channel-poiminta ennen skaalausta.image.APPLY_COLOR_PALETTE_FIRST: Suorita väripaletti ennen skaalausta.image.SCALE_ASPECT_KEEP: Sovita kohteen sisään kuvasuhde säilyttäen.image.SCALE_ASPECT_EXPAND: Täytä kohde kuvasuhde säilyttäen (rajaa).image.SCALE_ASPECT_IGNORE: Täytä kohde kuvasuhdetta huomioimatta (venyttää).image.ROTATE_90: Kierrä 90 astetta.image.ROTATE_180: Kierrä 180 astetta.image.ROTATE_270: Kierrä 270 astetta.
scaleon kaksiarvoinen monikko(min, max), joka ohjaa kuvan skaalaukseen käytettävää minimi- ja maksimisyvyyttä (millimetreinä). Oletuksena kehyksen todellinen minimi/maksimi.pixformatohjaa lopullisen kuvan pikselimuotoa. Oltavaimage.GRAYSCALEtaiimage.RGB565.copy_to_fbjosTrue, kirjoittaa uuden kuvan kehyspuskuriin sen sijaan, että varaisi sen MicroPython-keosta.timeoutkuinka monta millisekuntia odotetaan uutta kehystä ennenRuntimeError-poikkeuksen nostamista. Jos0, odotetaan ikuisesti.