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.

FLIR Lepton Adapter

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 °C bis +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 °C bis ~+450 °C (~+400 °C bei 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)