fir — upravljački program termalnog senzora (fir == daleko infracrveno)¶
Modul fir upravlja termopilnim poljima dalekog infracrvenog (FIR) zračenja priključenima na OpenMV Cam preko I2C – podržani su senzori 8x8, 16x4, 16x12 i 32x24 (vidi konstante na dnu ove stranice). Svaka sličica vraća temperaturu po pikselu u stupnjevima Celzijevim, koja se može prikazati kao samostalna termalna slika pomoću snapshot() ili spojiti s vidljivom svjetlosnom sličicom iz CSI senzora pomoću draw_ir(), obično putem palete boja kao što je image.PALETTE_RAINBOW ili image.PALETTE_IRONBOW.
Primjer upotrebe:
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)
Funkcije¶
- fir.init(type: int = -1, refresh: int | None = None, resolution: int | None = None) None¶
Inicijalizira priključeni termalni senzor.
typeoznačava vrstu termalnog senzora:fir.FIR_SHIELD: 16x4 piksela (MLX90621).fir.FIR_MLX90621: 16x4 piksela.fir.FIR_MLX90640: 32x24 piksela.fir.FIR_MLX90641: 16x12 piksela.fir.FIR_AMG8833: 8x8 piksela.
Prema zadanim postavkama
typeje-1, što uzrokuje dafir.init()automatski pretraži i inicijalizira priključeni termalni senzor na temelju njegove I2C adrese. Napomena:fir.FIR_MLX90640ifir.FIR_MLX90641dijele istu I2C adresu, pa morate proslijeditifir.FIR_MLX90641utypekako biste ga konkretno inicijalizirali.refreshje brzina osvježavanja termalnog senzora u Hz:fir.FIR_MLX90621: Zadano 64 Hz. Može biti 1, 2, 4, 8, 16, 32, 64, 128, 256 ili 512 Hz.fir.FIR_MLX90640: Zadano 32 Hz. Može biti 1, 2, 4, 8, 16, 32 ili 64 Hz.fir.FIR_MLX90641: Zadano 32 Hz. Može biti 1, 2, 4, 8, 16, 32 ili 64 Hz.fir.FIR_AMG8833: Fiksno na 10 Hz.
Veća brzina osvježavanja smanjuje točnost i obrnuto.
resolutionje razlučivost mjerenja termalnog senzora u bitovima:fir.FIR_MLX90621: Zadano 18. Može biti 15, 16, 17 ili 18.fir.FIR_MLX90640: Zadano 19. Može biti 16, 17, 18 ili 19.fir.FIR_MLX90641: Zadano 19. Može biti 16, 17, 18 ili 19.fir.FIR_AMG8833: Fiksno na 12.
Veća razlučivost smanjuje maksimalni temperaturni raspon i obrnuto.
- fir.type() int¶
Vraća vrstu termalnog senzora koji se koristi. Jedna od
fir.FIR_MLX90621,fir.FIR_MLX90640,fir.FIR_MLX90641ilifir.FIR_AMG8833.
- fir.refresh() int¶
Vraća trenutnu brzinu osvježavanja (Hz) postavljenu tijekom poziva
fir.init().
- fir.resolution() int¶
Vraća trenutnu razlučivost (bitova) postavljenu tijekom poziva
fir.init().
- fir.read_ta() float¶
Vraća temperaturu okoline (tj. temperaturu senzora) u Celzijevim stupnjevima kao float.
- fir.read_ir(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = -1) Tuple[float, List[float], float, float]¶
Vraća 4-torku
(ta, ir, to_min, to_max)koja sadrži temperaturu okoline, ravnu listuwidth * heighttemperatura tipa float, najmanju zabilježenu temperaturu i najveću zabilježenu temperaturu. Sve vrijednosti su u Celzijevim stupnjevima.hmirrorako je True, vodoravno zrcali poljeir.vflipako je True, okomito preokreće poljeir.transposeako je True, transponira poljeir(zamjenjuje širinu i visinu).timeoutako nije -1, broj milisekundi za čekanje na novu sličicu.
- 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¶
Crta polje
irnaimages gornjim lijevim kutom na(x, y).irje ravna lista temperaturawidth * heightkoju vraćafir.read_ir().x_scaleupravlja koliko se prikazana slika skalira u smjeru x. Negativna vrijednost vodoravno preokreće. Ako nije navedeno, podudara se sy_scalekako bi se zadržao omjer stranica.y_scaleupravlja koliko se prikazana slika skalira u smjeru y. Negativna vrijednost okomito preokreće. Ako nije navedeno, podudara se sx_scalekako bi se zadržao omjer stranica.roije pravokutnik područja interesa(x, y, w, h)izvornih IR podataka za crtanje.rgb_channelje RGB kanal (0=R, 1=G, 2=B) za prikaz na odredišnoj slici kada je odredište RGB565.-1(zadano) prikazuje sve kanale.alphaupravlja koliko se izvorne slike stapa u odredište (0-255). 255 je potpuno neprozirno; 0 ne rezultira nikakvom izmjenom.color_paletteje enum palete boja (npr.image.PALETTE_RAINBOW,image.PALETTE_IRONBOW) ili 256-pikselna RGB565 slika koja se koristi kao tablica za pretraživanje na izvornoj vrijednosti sivih tonova.alpha_paletteje 256-pikselna GRAYSCALE slika koja se koristi kao alfa tablica za pretraživanje koja moduliraalphapo vrijednosti izvornog piksela.hintje logički OR sljedećeg:image.AREA: Koristi skaliranje po površini pri smanjivanju.image.BILINEAR: Koristi bilinearno skaliranje.image.BICUBIC: Koristi bikubično skaliranje.image.CENTER: Centriraj sliku na odredištu.image.HMIRROR: Vodoravno zrcali.image.VFLIP: Okomito preokreni.image.TRANSPOSE: Transponiraj (zamijeni x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Primijeni izdvajanje rgb_channel prije skaliranja.image.APPLY_COLOR_PALETTE_FIRST: Primijeni paletu boja prije skaliranja.image.SCALE_ASPECT_KEEP: Uklopi unutar odredišta zadržavajući omjer stranica.image.SCALE_ASPECT_EXPAND: Ispuni odredište zadržavajući omjer stranica (obrezuje).image.SCALE_ASPECT_IGNORE: Ispuni odredište zanemarujući omjer stranica (rasteže).image.ROTATE_90: Zakreni za 90 stupnjeva.image.ROTATE_180: Zakreni za 180 stupnjeva.image.ROTATE_270: Zakreni za 270 stupnjeva.
scaleje 2-torka(min, max)koja upravlja minimalnom/maksimalnom temperaturom (u Celzijevim stupnjevima) koja se koristi za skaliranje poljair. Zadano je stvarni minimum i maksimumir.
- 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¶
Hvata sličicu s termalnog senzora i vraća je kao
image.Image. Radi slično kaosensor.snapshot(). Ako jecopy_to_fbFalse, nova slika se alocira na MicroPython hrpi (koja je ograničena); postavitecopy_to_fbna True kako biste umjesto toga zapisali rezultat u međuspremnik slike.hmirrorako je True, vodoravno zrcali novu sliku.vflipako je True, okomito preokreće novu sliku.transposeako je True, transponira novu sliku.x_scaleupravlja koliko se nova slika skalira u smjeru x. Negativna vrijednost vodoravno preokreće. Ako nije navedeno, podudara se sy_scalekako bi se zadržao omjer stranica.y_scaleupravlja koliko se nova slika skalira u smjeru y. Negativna vrijednost okomito preokreće. Ako nije navedeno, podudara se sx_scalekako bi se zadržao omjer stranica.roije pravokutnik područja interesa(x, y, w, h)izvornih IR podataka za crtanje.rgb_channelje RGB kanal (0=R, 1=G, 2=B) za prikaz.-1(zadano) prikazuje sve kanale.alphaupravlja koliko se izvorne slike stapa (0-255). 255 je potpuno neprozirno.color_paletteje enum palete boja ili 256-pikselna RGB565 slika koja se koristi kao tablica za pretraživanje na izvornoj vrijednosti sivih tonova.alpha_paletteje 256-pikselna GRAYSCALE slika koja se koristi kao alfa tablica za pretraživanje.hintje logički OR sljedećeg:image.AREA: Koristi skaliranje po površini pri smanjivanju.image.BILINEAR: Koristi bilinearno skaliranje.image.BICUBIC: Koristi bikubično skaliranje.image.CENTER: Centriraj sliku na odredištu.image.HMIRROR: Vodoravno zrcali.image.VFLIP: Okomito preokreni.image.TRANSPOSE: Transponiraj (zamijeni x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Primijeni izdvajanje rgb_channel prije skaliranja.image.APPLY_COLOR_PALETTE_FIRST: Primijeni paletu boja prije skaliranja.image.SCALE_ASPECT_KEEP: Uklopi unutar odredišta zadržavajući omjer stranica.image.SCALE_ASPECT_EXPAND: Ispuni odredište zadržavajući omjer stranica (obrezuje).image.SCALE_ASPECT_IGNORE: Ispuni odredište zanemarujući omjer stranica (rasteže).image.ROTATE_90: Zakreni za 90 stupnjeva.image.ROTATE_180: Zakreni za 180 stupnjeva.image.ROTATE_270: Zakreni za 270 stupnjeva.
scaleje 2-torka(min, max)koja upravlja minimalnom/maksimalnom temperaturom (u Celzijevim stupnjevima) koja se koristi za skaliranje IR polja. Zadano je stvarni minimum i maksimum IR-a.pixformatupravlja izlaznim formatom piksela. Mora bitiimage.GRAYSCALEiliimage.RGB565.copy_to_fbako je True, zapisuje rezultat u međuspremnik slike umjesto alociranja na hrpi.timeoutako nije -1, broj milisekundi za čekanje na novu sličicu.
Konstante¶
- fir.FIR_SHIELD: int¶
OpenMV Cam Thermopile Shield (MLX90621). Alias za
fir.FIR_MLX90621.