fir — drivrutin för värmesensor (fir == far infrared)¶
Modulen fir driver termopilmatriser för fjärrinfrarött (FIR) som är anslutna till en OpenMV Cam via I2C – sensorer på 8x8, 16x4, 16x12 och 32x24 stöds (se konstanterna längst ner på denna sida). Varje bildruta returnerar en temperatur per pixel i grader Celsius, vilken kan renderas som en fristående värmebild med snapshot() eller komponeras ovanpå en bildruta i synligt ljus från CSI-sensorn med draw_ir(), normalt genom en färgpalett såsom image.PALETTE_RAINBOW eller image.PALETTE_IRONBOW.
Exempel på användning:
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)
Funktioner¶
- fir.init(type: int = -1, refresh: int | None = None, resolution: int | None = None) None¶
Initierar en ansluten värmesensor.
typeanger typen av värmesensor:fir.FIR_SHIELD: 16x4 pixlar (MLX90621).fir.FIR_MLX90621: 16x4 pixlar.fir.FIR_MLX90640: 32x24 pixlar.fir.FIR_MLX90641: 16x12 pixlar.fir.FIR_AMG8833: 8x8 pixlar.
Som standard är
type-1vilket fårfir.init()att automatiskt söka efter och initiera en ansluten värmesensor baserat på dess I2C-adress. Observera attfir.FIR_MLX90640ochfir.FIR_MLX90641delar samma I2C-adress, så du måste skickafir.FIR_MLX90641tilltypeför att initiera den specifikt.refreshär värmesensorns uppdateringsfrekvens i Hz:fir.FIR_MLX90621: Standardvärdet är 64 Hz. Kan vara 1, 2, 4, 8, 16, 32, 64, 128, 256 eller 512 Hz.fir.FIR_MLX90640: Standardvärdet är 32 Hz. Kan vara 1, 2, 4, 8, 16, 32 eller 64 Hz.fir.FIR_MLX90641: Standardvärdet är 32 Hz. Kan vara 1, 2, 4, 8, 16, 32 eller 64 Hz.fir.FIR_AMG8833: Fast värde på 10 Hz.
En högre uppdateringsfrekvens sänker noggrannheten och vice versa.
resolutionär värmesensorns mätupplösning i bitar:fir.FIR_MLX90621: Standardvärdet är 18. Kan vara 15, 16, 17 eller 18.fir.FIR_MLX90640: Standardvärdet är 19. Kan vara 16, 17, 18 eller 19.fir.FIR_MLX90641: Standardvärdet är 19. Kan vara 16, 17, 18 eller 19.fir.FIR_AMG8833: Fast värde på 12.
En högre upplösning sänker det maximala temperaturintervallet och vice versa.
- fir.type() int¶
Returnerar typen av värmesensor som används. En av
fir.FIR_MLX90621,fir.FIR_MLX90640,fir.FIR_MLX90641ellerfir.FIR_AMG8833.
- fir.refresh() int¶
Returnerar den aktuella uppdateringsfrekvensen (Hz) som ställdes in under anropet till
fir.init().
- fir.resolution() int¶
Returnerar den aktuella upplösningen (bitar) som ställdes in under anropet till
fir.init().
- fir.read_ta() float¶
Returnerar omgivningstemperaturen (dvs. sensorns temperatur) i Celsius som ett flyttal.
- fir.read_ir(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = -1) Tuple[float, List[float], float, float]¶
Returnerar en 4-tupel
(ta, ir, to_min, to_max)som innehåller omgivningstemperaturen, en platt lista medwidth * heightflyttalstemperaturer, den lägsta uppmätta temperaturen och den högsta uppmätta temperaturen. Alla värden anges i Celsius.hmirrorspeglarir-matrisen horisontellt om True.vflipvänderir-matrisen vertikalt om True.transposetransponerarir-matrisen om True (byter plats på bredd och höjd).timeoutär, om inte -1, antalet millisekunder att vänta på en ny bildruta.
- 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¶
Ritar
ir-matrisen påimagemed dess övre vänstra hörn vid(x, y).irär den platta temperaturlistan medwidth * heightsom returneras avfir.read_ir().x_scalestyr hur mycket den renderade bilden skalas i x-riktningen. Ett negativt värde vänder horisontellt. Om det inte anges matchar dety_scaleför att bibehålla bildförhållandet.y_scalestyr hur mycket den renderade bilden skalas i y-riktningen. Ett negativt värde vänder vertikalt. Om det inte anges matchar detx_scaleför att bibehålla bildförhållandet.roiär intresseområdets rektangel(x, y, w, h)av käll-IR-datat som ska ritas.rgb_channelär den RGB-kanal (0=R, 1=G, 2=B) som ska renderas på destinationsbilden när destinationen är RGB565.-1(standard) renderar alla kanaler.alphastyr hur mycket av källbilden som ska blandas in i destinationen (0-255). 255 är helt ogenomskinlig; 0 ger ingen ändring.color_paletteär en enum för färgpalett (t.ex.image.PALETTE_RAINBOW,image.PALETTE_IRONBOW) eller en RGB565-bild med 256 pixlar som används som en uppslagstabell på gråskalevärdet i källan.alpha_paletteär en GRAYSCALE-bild med 256 pixlar som används som en alfa-uppslagstabell som moduleraralphaper källpixelvärde.hintär en logisk OR av:image.AREA: Använd areaskalning vid nedskalning.image.BILINEAR: Använd bilinjär skalning.image.BICUBIC: Använd bikubisk skalning.image.CENTER: Centrera bilden på destinationen.image.HMIRROR: Spegla horisontellt.image.VFLIP: Vänd vertikalt.image.TRANSPOSE: Transponera (byt x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Tillämpa rgb_channel-extrahering före skalning.image.APPLY_COLOR_PALETTE_FIRST: Tillämpa färgpalett före skalning.image.SCALE_ASPECT_KEEP: Anpassa inom destinationen med bibehållet bildförhållande.image.SCALE_ASPECT_EXPAND: Fyll destinationen med bibehållet bildförhållande (beskär).image.SCALE_ASPECT_IGNORE: Fyll destinationen utan hänsyn till bildförhållande (sträcker ut).image.ROTATE_90: Rotera 90 grader.image.ROTATE_180: Rotera 180 grader.image.ROTATE_270: Rotera 270 grader.
scaleär en 2-tupel(min, max)som styr den lägsta/högsta temperaturen (i Celsius) som används för att skalair-matrisen. Standardvärdet är det faktiska minimat och maximat iir.
- 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¶
Tar en bildruta från värmesensorn och returnerar den som en
image.Image. Fungerar på liknande sätt somsensor.snapshot(). Omcopy_to_fbär False allokeras den nya bilden på MicroPythons heap (vilken är begränsad); sättcopy_to_fbtill True för att istället skriva resultatet till bildbufferten.hmirrorspeglar den nya bilden horisontellt om True.vflipvänder den nya bilden vertikalt om True.transposetransponerar den nya bilden om True.x_scalestyr hur mycket den nya bilden skalas i x-riktningen. Ett negativt värde vänder horisontellt. Om det inte anges matchar dety_scaleför att bibehålla bildförhållandet.y_scalestyr hur mycket den nya bilden skalas i y-riktningen. Ett negativt värde vänder vertikalt. Om det inte anges matchar detx_scaleför att bibehålla bildförhållandet.roiär intresseområdets rektangel(x, y, w, h)av käll-IR-datat som ska ritas.rgb_channelär den RGB-kanal (0=R, 1=G, 2=B) som ska renderas.-1(standard) renderar alla kanaler.alphastyr hur mycket av källbilden som blandas in (0-255). 255 är helt ogenomskinlig.color_paletteär en enum för färgpalett eller en RGB565-bild med 256 pixlar som används som en uppslagstabell på gråskalevärdet i källan.alpha_paletteär en GRAYSCALE-bild med 256 pixlar som används som en alfa-uppslagstabell.hintär en logisk OR av:image.AREA: Använd areaskalning vid nedskalning.image.BILINEAR: Använd bilinjär skalning.image.BICUBIC: Använd bikubisk skalning.image.CENTER: Centrera bilden på destinationen.image.HMIRROR: Spegla horisontellt.image.VFLIP: Vänd vertikalt.image.TRANSPOSE: Transponera (byt x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Tillämpa rgb_channel-extrahering före skalning.image.APPLY_COLOR_PALETTE_FIRST: Tillämpa färgpalett före skalning.image.SCALE_ASPECT_KEEP: Anpassa inom destinationen med bibehållet bildförhållande.image.SCALE_ASPECT_EXPAND: Fyll destinationen med bibehållet bildförhållande (beskär).image.SCALE_ASPECT_IGNORE: Fyll destinationen utan hänsyn till bildförhållande (sträcker ut).image.ROTATE_90: Rotera 90 grader.image.ROTATE_180: Rotera 180 grader.image.ROTATE_270: Rotera 270 grader.
scaleär en 2-tupel(min, max)som styr den lägsta/högsta temperaturen (i Celsius) som används för att skala IR-matrisen. Standardvärdet är det faktiska minimat och maximat i IR-datat.pixformatstyr utdataformatet för pixlar. Måste varaimage.GRAYSCALEellerimage.RGB565.copy_to_fbskriver, om True, resultatet till bildbufferten istället för att allokera på heapen.timeoutär, om inte -1, antalet millisekunder att vänta på en ny bildruta.
Konstanter¶
- fir.FIR_SHIELD: int¶
OpenMV Cam Thermopile Shield (MLX90621). Alias för
fir.FIR_MLX90621.