FLIR Lepton Adapter¶
Das FLIR Lepton Adaptermodul verbindet FLIR Lepton-Wärmebildkerne (separat erhältlich) mit der OpenMV Cam und bietet sowohl AGC- als auch Direkt-Thermalmodi zur Temperaturmessung an Menschen / Objekten.
Vollständiges Datenblatt, Fotos und Bestellinformationen finden Sie auf der FLIR Lepton Adapter Produktseite.
Highlights¶
Kompatibel mit FLIR Lepton 1.x / 2.x / 3.x Kernen (separat erhältlich)
Sowohl AGC- als auch Direkt-Thermalmodi mit Temperaturzuordnung
Sieht in völliger Dunkelheit
Kompatibel mit allen modularen OpenMV Cam Basisplatinen
Verwendung¶
Steuern Sie die Lepton über csi.CSI mit cid= csi.LEPTON an. Der Treiber skaliert das native Einzelbild der Lepton von 80x60 (1.x/2.x) bzw. 160x120 (3.x) intern auf die von Ihnen gewählte Framesize hoch:
import csi
import time
csi0 = csi.CSI(cid=csi.LEPTON)
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QVGA)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())
Um kolorierte Einzelbilder direkt vom Sensor zu erhalten, wechseln Sie das pixformat auf csi.RGB565 und setzen Sie csi.CSI.color_palette auf image.PALETTE_IRONBOW — der Treiber gibt RGB565-Einzelbilder mit angewendeter Palette aus, sodass snapshot() direkt ironbow-kolorierte Einzelbilder zurückliefert:
csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)
Temperaturmessung¶
Radiometrische Leptons (Lepton 2.5 / 3.5) liefern kalibrierte Temperaturdaten pro Pixel. Aktivieren Sie den Messmodus über csi.CSI.ioctl mit csi.IOCTL_LEPTON_SET_MODE und begrenzen Sie anschließend das Temperaturfenster mit csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). Der Lepton-Treiber bildet den Graustufen-Pixelwert 0 linear auf min_celsius und 255 auf max_celsius ab, sodass jeder Pixel zu einer Temperaturzuordnung innerhalb des konfigurierten Fensters wird. Pixel, die kälter als min_celsius sind, sättigen bei 0, Pixel, die heißer als max_celsius sind, sättigen bei 255.
csi.IOCTL_LEPTON_SET_MODE nimmt zwei Flags entgegen. Das erste schaltet die Messung ein; das zweite wählt den Temperaturbereich des Sensors aus:
Niedriger Bereich —
(True, False)— Sensorspanne-10 °Cbis+140 °C(Szenen im Raummaßstab). Begrenzen Sie das Fenster auf den Interessensbereich, z. B.(20.0, 40.0)für die Verfolgung von Körperwärme:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
Hoher Bereich —
(True, True)— Sensorspanne typischerweise-10 °Cbis~+450 °C(~+400 °Cbei Raumtemperatur) für heiße Objekte. Begrenzen Sie z. B. auf(0.0, 400.0)für die Verfolgung von Öfen oder heißen Elementen:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
So konvertieren Sie einen Graustufen-Pixel zurück in Grad Celsius:
def p_to_temp(p, min_t, max_t):
return (p * (max_t - min_t)) / 255.0 + min_t
Dies funktioniert bei einzelnen Pixeln oder bei aggregierten Statistiken (z. B. stats.mean() aus Image.get_statistics) innerhalb eines ROI, wenn heiße/kalte Regionen mit Image.find_blobs lokalisiert werden.
Bemerkung
Die Temperaturmessung erfordert die Lepton im Graustufenmodus ohne gesetzte Farbpalette — die lineare Pixel-zu-Temperatur-Zuordnung gilt nur für die rohe Graustufenausgabe. Um sie zur Anzeige zu kolorieren, tun Sie dies separat, indem Sie das Graustufen-Einzelbild mit Image.draw_image und color_palette= image.PALETTE_IRONBOW auf einen RGB-Ausgabepuffer zeichnen:
out = image.Image(csi0.width(), csi0.height(), image.RGB565)
out.draw_image(img, 0, 0, color_palette=image.PALETTE_IRONBOW)