fir — hőérzékelő-meghajtó (fir == far infrared, távoli infravörös)¶
A fir modul az OpenMV Cam-hez I2C-n keresztül csatlakoztatott távoli infravörös (FIR) termoelem-tömböket vezérli – 8x8, 16x4, 16x12 és 32x24 méretű érzékelők támogatottak (lásd az oldal alján található konstansokat). Minden képkocka képpontonkénti hőmérsékletet ad vissza Celsius-fokban, amely megjeleníthető önálló hőképként a snapshot() függvénnyel, vagy rávetíthető a CSI érzékelő látható fényű képkockájára a draw_ir() függvénnyel, általában egy színpalettán keresztül, mint például a image.PALETTE_RAINBOW vagy a image.PALETTE_IRONBOW.
Példa a használatra:
import csi
import fir
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
fir.init()
while True:
img = csi0.snapshot()
ta, ir, to_min, to_max = fir.read_ir()
fir.draw_ir(img, ir)
print("====================")
print("Ambient temperature: %0.2f" % ta)
print("Min temperature seen: %0.2f" % to_min)
print("Max temperature seen: %0.2f" % to_max)
Függvények¶
- fir.init(type: int = -1, refresh: int | None = None, resolution: int | None = None) None¶
Inicializál egy csatlakoztatott hőérzékelőt.
A
typea hőérzékelő típusát jelzi:fir.FIR_SHIELD: 16x4 képpont (MLX90621).fir.FIR_MLX90621: 16x4 képpont.fir.FIR_MLX90640: 32x24 képpont.fir.FIR_MLX90641: 16x12 képpont.fir.FIR_AMG8833: 8x8 képpont.
By default
typeis-1which causesfir.init()to automatically scan and initialize an attached thermal sensor based on its I2C address. Note thatfir.FIR_MLX90640andfir.FIR_MLX90641share the same I2C address so you must passfir.FIR_MLX90641totypeto initialize it specifically.A
refresha hőérzékelő frissítési gyakorisága Hz-ben:fir.FIR_MLX90621: Alapértelmezés szerint 64 Hz. Lehet 1, 2, 4, 8, 16, 32, 64, 128, 256 vagy 512 Hz.fir.FIR_MLX90640: Alapértelmezés szerint 32 Hz. Lehet 1, 2, 4, 8, 16, 32 vagy 64 Hz.fir.FIR_MLX90641: Alapértelmezés szerint 32 Hz. Lehet 1, 2, 4, 8, 16, 32 vagy 64 Hz.fir.FIR_AMG8833: Fix 10 Hz.
A magasabb frissítési gyakoriság csökkenti a pontosságot, és fordítva.
A
resolutiona hőérzékelő mérési felbontása bitekben:fir.FIR_MLX90621: Alapértelmezés szerint 18. Lehet 15, 16, 17 vagy 18.fir.FIR_MLX90640: Alapértelmezés szerint 19. Lehet 16, 17, 18 vagy 19.fir.FIR_MLX90641: Alapértelmezés szerint 19. Lehet 16, 17, 18 vagy 19.fir.FIR_AMG8833: Fix 12.
A magasabb felbontás csökkenti a maximális hőmérséklet-tartományt, és fordítva.
- fir.type() int¶
Visszaadja a használatban lévő hőérzékelő típusát. A
fir.FIR_MLX90621,fir.FIR_MLX90640,fir.FIR_MLX90641vagyfir.FIR_AMG8833egyike.
- fir.refresh() int¶
Visszaadja a
fir.init()hívás során beállított aktuális frissítési gyakoriságot (Hz).
- fir.resolution() int¶
Visszaadja a
fir.init()hívás során beállított aktuális felbontást (bit).
- fir.read_ta() float¶
Visszaadja a környezeti hőmérsékletet (azaz az érzékelő hőmérsékletét) Celsius-fokban, lebegőpontos értékként.
- fir.read_ir(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = -1) Tuple[float, List[float], float, float]¶
Visszaad egy 4-elemű
(ta, ir, to_min, to_max)rendezett négyest, amely tartalmazza a környezeti hőmérsékletet, a lebegőpontos hőmérsékletek laposwidth * heightlistáját, a megfigyelt minimális hőmérsékletet és a megfigyelt maximális hőmérsékletet. Minden érték Celsius-fokban van.A
hmirrorha True, vízszintesen tükrözi azirtömböt.A
vflipha True, függőlegesen tükrözi azirtömböt.A
transposeha True, transzponálja azirtömböt (felcseréli a szélességet és a magasságot).A
timeoutha nem -1, akkor az új képkockára való várakozás ezredmásodperceinek száma.
- fir.draw_ir(image: image.Image, ir: 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 | None = image.PALETTE_RAINBOW, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None) None¶
Felrajzolja az
irtömböt azimageképre úgy, hogy annak bal felső sarka az(x, y)pontnál legyen.Az
irafir.read_ir()által visszaadott laposwidth * heighthőmérsékletlista.Az
x_scaleszabályozza, hogy a megjelenített kép mennyivel legyen átméretezve x irányban. Negatív érték vízszintesen tükröz. Ha nincs megadva, ay_scaleértékéhez igazodik a képarány megtartása érdekében.Az
y_scaleszabályozza, hogy a megjelenített kép mennyivel legyen átméretezve y irányban. Negatív érték függőlegesen tükröz. Ha nincs megadva, azx_scaleértékéhez igazodik a képarány megtartása érdekében.A
roia forrás IR-adatok azon érdeklődési terület téglalapja(x, y, w, h), amelyet rajzolni kell.Az
rgb_channelaz az RGB-csatorna (0=R, 1=G, 2=B), amelyet a célképre kell megjeleníteni, ha a cél RGB565. A-1(alapértelmezett) az összes csatornát megjeleníti.Az
alphaszabályozza, hogy a forráskép mennyire legyen beleolvasztva a célképbe (0-255). A 255 teljesen átlátszatlan; a 0 nem eredményez módosítást.A
color_paletteegy színpaletta-enum (pl.image.PALETTE_RAINBOW,image.PALETTE_IRONBOW) vagy egy 256 képpontos RGB565 kép, amelyet keresőtáblaként használ a szürkeárnyalatos forrásértékhez.Az
alpha_paletteegy 256 képpontos GRAYSCALE kép, amelyet alfa-keresőtáblaként használ, és amely forrásképpontonként modulálja azalphaértéket.A
hinta következők logikai VAGY kapcsolata: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 helyezése 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: Elforgatás 90 fokkal.image.ROTATE_180: Elforgatás 180 fokkal.image.ROTATE_270: Elforgatás 270 fokkal.
A
scaleegy 2-elemű(min, max)rendezett pár, amely azirtömb skálázásához használt minimális/maximális hőmérsékletet (Celsius-fokban) szabályozza. Alapértelmezés szerint azirtényleges minimuma és maximuma.
- fir.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 | None = image.PALETTE_RAINBOW, 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 = -1) image.Image¶
Rögzít egy képkockát a hőérzékelőtől, és
image.Imageobjektumként adja vissza. Asensor.snapshot()függvényhez hasonlóan működik. Ha acopy_to_fbFalse, az új kép a MicroPython kupacon (amely korlátozott) kerül lefoglalásra; állítsa acopy_to_fbértékét True-ra, hogy az eredmény a képkocka-pufferbe íródjon helyette.A
hmirrorha True, vízszintesen tükrözi az új képet.A
vflipha True, függőlegesen tükrözi az új képet.A
transposeha True, transzponálja az új képet.Az
x_scaleszabályozza, hogy az új kép mennyivel legyen átméretezve x irányban. Negatív érték vízszintesen tükröz. Ha nincs megadva, ay_scaleértékéhez igazodik a képarány megtartása érdekében.Az
y_scaleszabályozza, hogy az új kép mennyivel legyen átméretezve y irányban. Negatív érték függőlegesen tükröz. Ha nincs megadva, azx_scaleértékéhez igazodik a képarány megtartása érdekében.A
roia forrás IR-adatok azon érdeklődési terület téglalapja(x, y, w, h), amelyet rajzolni kell.Az
rgb_channelaz a megjelenítendő RGB-csatorna (0=R, 1=G, 2=B). A-1(alapértelmezett) az összes csatornát megjeleníti.Az
alphaszabályozza, hogy a forráskép mennyire legyen beleolvasztva (0-255). A 255 teljesen átlátszatlan.A
color_paletteegy színpaletta-enum vagy egy 256 képpontos RGB565 kép, amelyet keresőtáblaként használ a szürkeárnyalatos forrásértékhez.Az
alpha_paletteegy 256 képpontos GRAYSCALE kép, amelyet alfa-keresőtáblaként használ.A
hinta következők logikai VAGY kapcsolata: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 helyezése 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: Elforgatás 90 fokkal.image.ROTATE_180: Elforgatás 180 fokkal.image.ROTATE_270: Elforgatás 270 fokkal.
A
scaleegy 2-elemű(min, max)rendezett pár, amely az IR-tömb skálázásához használt minimális/maximális hőmérsékletet (Celsius-fokban) szabályozza. Alapértelmezés szerint az IR tényleges minimuma és maximuma.A
pixformata kimeneti képpontformátumot szabályozza.image.GRAYSCALEvagyimage.RGB565kell legyen.A
copy_to_fbha True, az eredményt a képkocka-pufferbe írja a kupacon való lefoglalás helyett.A
timeoutha nem -1, akkor az új képkockára való várakozás ezredmásodperceinek száma.
Konstansok¶
- fir.FIR_SHIELD: int¶
Az OpenMV Cam Thermopile Shield (MLX90621). A
fir.FIR_MLX90621aliasa.