fir — thermische sensor-driver (fir == far infrared)¶
De fir-module bestuurt Far-Infrared (FIR) thermopile-arrays die via I2C op een OpenMV Cam zijn aangesloten – 8x8-, 16x4-, 16x12- en 32x24-sensoren worden ondersteund (zie de constanten onderaan deze pagina). Elk frame retourneert een temperatuur per pixel in graden Celsius, die kan worden weergegeven als een op zichzelf staande thermische afbeelding met snapshot() of kan worden samengesteld op een frame met zichtbaar licht van de CSI-sensor met draw_ir(), normaal gesproken via een kleurenpalet zoals image.PALETTE_RAINBOW of image.PALETTE_IRONBOW.
Voorbeeldgebruik:
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)
Functies¶
- fir.init(type: int = -1, refresh: int | None = None, resolution: int | None = None) None¶
Initialiseert een aangesloten thermische sensor.
typegeeft het type thermische sensor aan:fir.FIR_SHIELD: 16x4 pixels (MLX90621).fir.FIR_MLX90621: 16x4 pixels.fir.FIR_MLX90640: 32x24 pixels.fir.FIR_MLX90641: 16x12 pixels.fir.FIR_AMG8833: 8x8 pixels.
Standaard is
typegelijk aan-1, waardoorfir.init()automatisch scant naar en een aangesloten thermische sensor initialiseert op basis van het I2C-adres. Let op datfir.FIR_MLX90640enfir.FIR_MLX90641hetzelfde I2C-adres delen, dus je moetfir.FIR_MLX90641aantypedoorgeven om die specifiek te initialiseren.refreshis de verversingssnelheid van de thermische sensor in Hz:fir.FIR_MLX90621: Standaard 64 Hz. Kan 1, 2, 4, 8, 16, 32, 64, 128, 256 of 512 Hz zijn.fir.FIR_MLX90640: Standaard 32 Hz. Kan 1, 2, 4, 8, 16, 32 of 64 Hz zijn.fir.FIR_MLX90641: Standaard 32 Hz. Kan 1, 2, 4, 8, 16, 32 of 64 Hz zijn.fir.FIR_AMG8833: Vast op 10 Hz.
Een hogere verversingssnelheid verlaagt de nauwkeurigheid en omgekeerd.
resolutionis de meetresolutie van de thermische sensor in bits:fir.FIR_MLX90621: Standaard 18. Kan 15, 16, 17 of 18 zijn.fir.FIR_MLX90640: Standaard 19. Kan 16, 17, 18 of 19 zijn.fir.FIR_MLX90641: Standaard 19. Kan 16, 17, 18 of 19 zijn.fir.FIR_AMG8833: Vast op 12.
Een hogere resolutie verlaagt het maximale temperatuurbereik en omgekeerd.
- fir.width() int¶
Retourneert de horizontale resolutie (in pixels) van de in gebruik zijnde thermische sensor.
- fir.height() int¶
Retourneert de verticale resolutie (in pixels) van de in gebruik zijnde thermische sensor.
- fir.type() int¶
Retourneert het type van de in gebruik zijnde thermische sensor. Een van
fir.FIR_MLX90621,fir.FIR_MLX90640,fir.FIR_MLX90641offir.FIR_AMG8833.
- fir.refresh() int¶
Retourneert de huidige verversingssnelheid (Hz) die is ingesteld tijdens de
fir.init()-aanroep.
- fir.resolution() int¶
Retourneert de huidige resolutie (bits) die is ingesteld tijdens de
fir.init()-aanroep.
- fir.read_ta() float¶
Retourneert de omgevingstemperatuur (d.w.z. de sensortemperatuur) in graden Celsius als een float.
- fir.read_ir(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = -1) Tuple[float, List[float], float, float]¶
Retourneert een 4-tuple
(ta, ir, to_min, to_max)met de omgevingstemperatuur, een plattewidth * height-lijst met float-temperaturen, de laagst waargenomen temperatuur en de hoogst waargenomen temperatuur. Alle waarden zijn in graden Celsius.hmirrorindien True spiegelt deir-array horizontaal.vflipindien True keert deir-array verticaal om.transposeindien True transponeert deir-array (verwisselt breedte en hoogte).timeoutindien niet -1, het aantal milliseconden om op een nieuw frame te wachten.
- 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¶
Tekent de
ir-array opimagemet de linkerbovenhoek op(x, y).iris de plattewidth * height-temperatuurlijst die wordt geretourneerd doorfir.read_ir().x_scalebepaalt hoeveel de gerenderde afbeelding wordt geschaald in de x-richting. Een negatieve waarde spiegelt horizontaal. Indien niet opgegeven, komt deze overeen mety_scaleom de beeldverhouding te behouden.y_scalebepaalt hoeveel de gerenderde afbeelding wordt geschaald in de y-richting. Een negatieve waarde spiegelt verticaal. Indien niet opgegeven, komt deze overeen metx_scaleom de beeldverhouding te behouden.roiis de rechthoek van het aandachtsgebied(x, y, w, h)van de bron-IR-data die getekend moet worden.rgb_channelis het RGB-kanaal (0=R, 1=G, 2=B) dat op de doelafbeelding gerenderd wordt wanneer het doel RGB565 is.-1(standaard) rendert alle kanalen.alphabepaalt hoeveel van de bronafbeelding in het doel wordt gemengd (0-255). 255 is volledig dekkend; 0 leidt tot geen wijziging.color_paletteis een kleurenpalet-enum (bijv.image.PALETTE_RAINBOW,image.PALETTE_IRONBOW) of een RGB565-afbeelding van 256 pixels die als opzoektabel op de grijswaarden-bronwaarde wordt gebruikt.alpha_paletteis een GRAYSCALE-afbeelding van 256 pixels die als alpha-opzoektabel wordt gebruikt enalphaper bronpixelwaarde moduleert.hintis een logische OR van:image.AREA: Gebruik area-schaling bij verkleinen.image.BILINEAR: Gebruik bilineaire schaling.image.BICUBIC: Gebruik bicubische schaling.image.CENTER: Centreer de afbeelding op het doel.image.HMIRROR: Horizontaal spiegelen.image.VFLIP: Verticaal omkeren.image.TRANSPOSE: Transponeren (x/y verwisselen).image.EXTRACT_RGB_CHANNEL_FIRST: Pas rgb_channel-extractie toe vóór het schalen.image.APPLY_COLOR_PALETTE_FIRST: Pas het kleurenpalet toe vóór het schalen.image.SCALE_ASPECT_KEEP: Passend binnen het doel met behoud van de beeldverhouding.image.SCALE_ASPECT_EXPAND: Vul het doel met behoud van de beeldverhouding (snijdt bij).image.SCALE_ASPECT_IGNORE: Vul het doel zonder de beeldverhouding aan te houden (uitrekken).image.ROTATE_90: Roteer 90 graden.image.ROTATE_180: Roteer 180 graden.image.ROTATE_270: Roteer 270 graden.
scaleis een 2-tuple(min, max)dat de minimale/maximale temperatuur (in graden Celsius) bepaalt die wordt gebruikt om deir-array te schalen. Standaard de werkelijke min en max vanir.
- 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¶
Legt een frame vast van de thermische sensor en retourneert dit als een
image.Image. Werkt vergelijkbaar metsensor.snapshot(). Alscopy_to_fbFalse is, wordt de nieuwe afbeelding op de MicroPython-heap (die beperkt is) toegewezen; stelcopy_to_fbin op True om het resultaat in plaats daarvan naar de framebuffer te schrijven.hmirrorindien True spiegelt de nieuwe afbeelding horizontaal.vflipindien True keert de nieuwe afbeelding verticaal om.transposeindien True transponeert de nieuwe afbeelding.x_scalebepaalt hoeveel de nieuwe afbeelding wordt geschaald in de x-richting. Een negatieve waarde spiegelt horizontaal. Indien niet opgegeven, komt deze overeen mety_scaleom de beeldverhouding te behouden.y_scalebepaalt hoeveel de nieuwe afbeelding wordt geschaald in de y-richting. Een negatieve waarde spiegelt verticaal. Indien niet opgegeven, komt deze overeen metx_scaleom de beeldverhouding te behouden.roiis de rechthoek van het aandachtsgebied(x, y, w, h)van de bron-IR-data die getekend moet worden.rgb_channelis het RGB-kanaal (0=R, 1=G, 2=B) dat gerenderd moet worden.-1(standaard) rendert alle kanalen.alphabepaalt hoeveel van de bronafbeelding wordt gemengd (0-255). 255 is volledig dekkend.color_paletteis een kleurenpalet-enum of een RGB565-afbeelding van 256 pixels die als opzoektabel op de grijswaarden-bronwaarde wordt gebruikt.alpha_paletteis een GRAYSCALE-afbeelding van 256 pixels die als alpha-opzoektabel wordt gebruikt.hintis een logische OR van:image.AREA: Gebruik area-schaling bij verkleinen.image.BILINEAR: Gebruik bilineaire schaling.image.BICUBIC: Gebruik bicubische schaling.image.CENTER: Centreer de afbeelding op het doel.image.HMIRROR: Horizontaal spiegelen.image.VFLIP: Verticaal omkeren.image.TRANSPOSE: Transponeren (x/y verwisselen).image.EXTRACT_RGB_CHANNEL_FIRST: Pas rgb_channel-extractie toe vóór het schalen.image.APPLY_COLOR_PALETTE_FIRST: Pas het kleurenpalet toe vóór het schalen.image.SCALE_ASPECT_KEEP: Passend binnen het doel met behoud van de beeldverhouding.image.SCALE_ASPECT_EXPAND: Vul het doel met behoud van de beeldverhouding (snijdt bij).image.SCALE_ASPECT_IGNORE: Vul het doel zonder de beeldverhouding aan te houden (uitrekken).image.ROTATE_90: Roteer 90 graden.image.ROTATE_180: Roteer 180 graden.image.ROTATE_270: Roteer 270 graden.
scaleis een 2-tuple(min, max)dat de minimale/maximale temperatuur (in graden Celsius) bepaalt die wordt gebruikt om de IR-array te schalen. Standaard de werkelijke min en max van de IR.pixformatbepaalt het uitvoer-pixelformaat. Moetimage.GRAYSCALEofimage.RGB565zijn.copy_to_fbindien True schrijft het resultaat naar de framebuffer in plaats van het op de heap toe te wijzen.timeoutindien niet -1, het aantal milliseconden om op een nieuw frame te wachten.
Constanten¶
- fir.FIR_SHIELD: int¶
Het OpenMV Cam Thermopile Shield (MLX90621). Alias voor
fir.FIR_MLX90621.