tof — time-of-flight érzékelő meghajtó¶
A tof modul az OpenMV Camhez I2C-n keresztül csatlakoztatott time-of-flight (ToF) távolságmérő érzékelőket vezérli. Minden képkocka képpontonkénti mélységértéket ad vissza milliméterben egy 8x8-as zónarács esetén (VL53L5CX / VL53L8CX), amely a snapshot() segítségével önálló mélységképként jeleníthető meg, vagy a draw_depth() segítségével a CSI érzékelő látható fényű képkockájára komponálható, általában egy színpaletta, például az image.PALETTE_DEPTH segítségével.
Példa a használatra:
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)
Ha a mélységtömböt/-képet 90 fok többszöröseivel szeretné elforgatni, adja át a következő hmirror/vflip/transpose kombinációkat a read_depth, draw_depth vagy snapshot függvénynek:
vflip=False, hmirror=False, transpose=False-> 0 fokos forgatás
vflip=True, hmirror=False, transpose=True-> 90 fokos forgatás
vflip=True, hmirror=True, transpose=False-> 180 fokos forgatás
vflip=False, hmirror=True, transpose=True-> 270 fokos forgatás
Függvények¶
- tof.init(type: int = -1) None¶
Inicializál egy fedélzeti mélységérzékelőt.
A
typejelzi a TOF érzékelő típusát:tof.TOF_VL53LX: 8x8 képpont.
Alapértelmezés szerint a
typeértéke-1, ami arra készteti atof.init()függvényt, hogy az I2C-cím alapján automatikusan beolvassa és inicializálja a csatlakoztatott TOF érzékelőt.
- tof.width() int¶
Visszaadja a használatban lévő mélységérzékelő szélességét (vízszintes felbontását).
RuntimeErrorkivételt vált ki, ha az érzékelő nincs inicializálva.
- tof.height() int¶
Visszaadja a használatban lévő mélységérzékelő magasságát (függőleges felbontását).
RuntimeErrorkivételt vált ki, ha az érzékelő nincs inicializálva.
- tof.type() int¶
Visszaadja a használatban lévő mélységérzékelő típusát:
RuntimeErrorkivételt vált ki, ha az érzékelő nincs inicializálva.
- tof.refresh() int¶
Visszaadja a használatban lévő mélységérzékelő frissítési gyakoriságát (Hz-ben):
tof.TOF_VL53LX: 15 Hz.
RuntimeErrorkivételt vált ki, ha az érzékelő nincs inicializálva.
- tof.read_depth(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = 100) Tuple[List[float], float, float]¶
Egy tuple-t ad vissza, amely tartalmazza a mélységlistát (
width * heightdarab float érték mm-ben), a látott minimális mélységet és a látott maximális mélységet.hmirrorhaTrue, vízszintesen tükrözi a mélységtömböt.vfliphaTrue, függőlegesen tükrözi a mélységtömböt.transposehaTrue, transzponálja a mélységtömböt.timeouthány milliszekundumig várjon az új képkockára, mielőttRuntimeErrorkivételt vált ki. Ha0, örökké vár.
- 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¶
Egy
depthtömböt (aread_deptháltal visszaadott formában) rajzol azimageképre, amelynek bal felső sarka azx,yhelyen kezdődik.Az
x_scaleszabályozza, hogy a megjelenített kép mennyire legyen átméretezve x irányban (float). Ha ez az érték negatív, a kép vízszintesen tükröződik. Ha nincs megadva, azy_scaleértékéhez igazodik a képarány megtartásához.Az
y_scaleszabályozza, hogy a megjelenített kép mennyire legyen átméretezve y irányban (float). Ha ez az érték negatív, a kép függőlegesen tükröződik. Ha nincs megadva, azx_scaleértékéhez igazodik a képarány megtartásához.A
roia forrás mélységtömb kirajzolandó érdeklődési terület téglalapját jelölő(x, y, w, h)tuple.Az
rgb_channelaz a forrásból kinyerendő RGB csatorna (0=R, 1=G, 2=B). A-1(alapértelmezett) minden csatornát használ.Az
alphaszabályozza, hogy a forrásból mennyi keveredik a célképbe. A255átlátszatlan, a0nem eredményez módosítást. Tartomány: 0-255.A
color_paletteegy színpaletta-enum (pl.image.PALETTE_DEPTH,image.PALETTE_RAINBOW) vagy egy 256 képpontos RGB565 kép, amely színkikereső táblaként szolgál a szürkeárnyalatos mélységérték alapján.Az
alpha_paletteha nemNone, egy 256 képpontos szürkeárnyalatos kép, amely alfa-kikereső táblaként szolgál, és képpontonként modulálja azalphaértéket.A
hinta következők logikai VAGY-a:image.AREA: Területalapú méretezés használata kicsinyítéskor.image.BILINEAR: Bilineáris méretezés használata.image.BICUBIC: Bikubikus méretezés használata.image.CENTER: A kép középre igazítása a célon.image.HMIRROR: Vízszintes tükrözés.image.VFLIP: Függőleges tükrözés.image.TRANSPOSE: Transzponálás (x/y felcserélése).image.EXTRACT_RGB_CHANNEL_FIRST: Az rgb_channel kinyerésének alkalmazása a méretezés előtt.image.APPLY_COLOR_PALETTE_FIRST: A színpaletta alkalmazása a méretezés előtt.image.SCALE_ASPECT_KEEP: Beillesztés a célba a képarány megtartásával.image.SCALE_ASPECT_EXPAND: A cél kitöltése a képarány megtartásával (levág).image.SCALE_ASPECT_IGNORE: A cél kitöltése a képarány figyelmen kívül hagyásával (nyújt).image.ROTATE_90: Forgatás 90 fokkal.image.ROTATE_180: Forgatás 180 fokkal.image.ROTATE_270: Forgatás 270 fokkal.
A
scaleegy kétértékű(min, max)tuple, amely a mélységkép méretezéséhez használt minimális és maximális mélységet (mm-ben) szabályozza. Alapértelmezés szerint a mélységtömb tényleges minimuma és maximuma.Megjegyzés
A
read_depthmegjegyzi, hatranspose=Trueértékkel hívták meg, és adraw_depthezt belsőleg használja a forrástömb méretezéséhez.
- 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¶
Beolvas egy képkockát a mélységérzékelőből, és egy új
image.Imageobjektumot ad vissza, amely vagyimage.GRAYSCALE, vagyimage.RGB565.hmirrorhaTrue, vízszintesen tükrözi az új képet.vfliphaTrue, függőlegesen tükrözi az új képet.transposehaTrue, transzponálja az új képet.Az
x_scaleszabályozza, hogy a kép mennyire legyen átméretezve x irányban (float). A negatív értékek vízszintesen tükröznek. Ha nincs megadva, azy_scaleértékéhez igazodik.Az
y_scaleszabályozza, hogy a kép mennyire legyen átméretezve y irányban (float). A negatív értékek függőlegesen tükröznek. Ha nincs megadva, azx_scaleértékéhez igazodik.A
roia forrásból kinyerendő érdeklődési terület téglalapját jelölő(x, y, w, h)tuple.Az
rgb_channela kinyerendő RGB csatorna (0=R, 1=G, 2=B). A-1(alapértelmezett) minden csatornát használ.Az
alphaszabályozza a forrásból a célba történő keverést. A255átlátszatlan, a0változatlanul hagyja a célt. Tartomány: 0-255.A
color_paletteegy színpaletta-enum (pl.image.PALETTE_DEPTH) vagy egy 256 képpontos RGB565 kép, amely színkikereső táblaként szolgál.Az
alpha_paletteha nemNone, egy 256 képpontos szürkeárnyalatos kép, amely alfa-kikereső táblaként szolgál.A
hinta következők logikai VAGY-a:image.AREA: Területalapú méretezés használata kicsinyítéskor.image.BILINEAR: Bilineáris méretezés használata.image.BICUBIC: Bikubikus méretezés használata.image.CENTER: A kép középre igazítása a célon.image.HMIRROR: Vízszintes tükrözés.image.VFLIP: Függőleges tükrözés.image.TRANSPOSE: Transzponálás (x/y felcserélése).image.EXTRACT_RGB_CHANNEL_FIRST: Az rgb_channel kinyerésének alkalmazása a méretezés előtt.image.APPLY_COLOR_PALETTE_FIRST: A színpaletta alkalmazása a méretezés előtt.image.SCALE_ASPECT_KEEP: Beillesztés a célba a képarány megtartásával.image.SCALE_ASPECT_EXPAND: A cél kitöltése a képarány megtartásával (levág).image.SCALE_ASPECT_IGNORE: A cél kitöltése a képarány figyelmen kívül hagyásával (nyújt).image.ROTATE_90: Forgatás 90 fokkal.image.ROTATE_180: Forgatás 180 fokkal.image.ROTATE_270: Forgatás 270 fokkal.
A
scaleegy kétértékű(min, max)tuple, amely a kép méretezéséhez használt minimális és maximális mélységet (mm-ben) szabályozza. Alapértelmezés szerint a képkocka tényleges minimuma/maximuma.A
pixformatszabályozza a végső kép képpontformátumát.image.GRAYSCALEvagyimage.RGB565kell legyen.A
copy_to_fbhaTrue, az új képet a képkocka-pufferbe írja ahelyett, hogy a MicroPython heapen foglalna helyet.timeouthány milliszekundumig várjon az új képkockára, mielőttRuntimeErrorkivételt vált ki. Ha0, örökké vár.