FLIR Lepton-adapter

De FLIR Lepton Adapter Module verbindt FLIR Lepton-thermische cores (apart verkrijgbaar) met de OpenMV Cam, met zowel AGC- als directe-thermische modi voor temperatuurmeting van mensen / objecten.

FLIR Lepton-adapter

Voor de volledige datasheet, foto’s en bestelinformatie, zie de FLIR Lepton-adapter productpagina.

Hoogtepunten

  • Compatibel met FLIR Lepton 1.x / 2.x / 3.x cores (apart verkrijgbaar)

  • Zowel AGC- als directe-thermische modi met temperatuurtoewijzing

  • Ziet in volledige duisternis

  • Compatibel met alle modulaire OpenMV Cam-basisborden

Gebruik

Stuur de Lepton aan via csi.CSI met cid= csi.LEPTON. De driver schaalt het native frame van de Lepton van 80x60 (1.x/2.x) of 160x120 (3.x) intern op naar elke framesize die u instelt:

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())

Om gekleurde frames rechtstreeks vanuit de sensor te krijgen, schakelt u het pixformat over naar csi.RGB565 en stelt u csi.CSI.color_palette in op image.PALETTE_IRONBOW — de driver levert RGB565-frames met het palet toegepast, zodat snapshot() direct ironbow-gekleurde frames retourneert:

csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)

Temperatuurmeting

Radiometrische Leptons (Lepton 2.5 / 3.5) rapporteren gekalibreerde temperatuurgegevens per pixel. Schakel de meetmodus in via csi.CSI.ioctl met csi.IOCTL_LEPTON_SET_MODE en begrens vervolgens het temperatuurvenster met csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). De Lepton-driver wijst de grijswaarde-pixelwaarde 0 lineair toe aan min_celsius en 255 aan max_celsius, zodat elke pixel een temperatuuropzoeking wordt binnen het geconfigureerde venster. Pixels die kouder zijn dan min_celsius verzadigen op 0, pixels die heter zijn dan max_celsius verzadigen op 255.

csi.IOCTL_LEPTON_SET_MODE neemt twee vlaggen aan. De eerste schakelt de meting in; de tweede selecteert het temperatuurbereik van de sensor:

  • Laag bereik(True, False) — sensorbereik -10 °C tot +140 °C (kamergrootte-scènes). Begrens het venster tot het aandachtsgebied, bijv. (20.0, 40.0) voor het volgen van lichaamswarmte:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • Hoog bereik(True, True) — sensorbereik typisch -10 °C tot ~+450 °C (~+400 °C bij kamertemperatuur) voor hete objecten. Begrens tot bijv. (0.0, 400.0) voor het volgen van een oven of heet element:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
    

Om een grijswaarde-pixel terug te converteren naar Celsius:

def p_to_temp(p, min_t, max_t):
    return (p * (max_t - min_t)) / 255.0 + min_t

Dit werkt op individuele pixels of op geaggregeerde statistieken (bijv. stats.mean() van Image.get_statistics) binnen een ROI bij het lokaliseren van hete/koude gebieden met Image.find_blobs.

Notitie

Temperatuurmeting vereist de Lepton in grijswaardenmodus zonder ingesteld kleurpalet — de lineaire pixel-naar-temperatuurtoewijzing geldt alleen op de ruwe grijswaarden-uitvoer. Om voor weergave in te kleuren, doet u dit afzonderlijk door het grijswaarden-frame op een RGB-uitvoerbuffer te tekenen met Image.draw_image en color_palette= image.PALETTE_IRONBOW

out = image.Image(csi0.width(), csi0.height(), image.RGB565)
out.draw_image(img, 0, 0, color_palette=image.PALETTE_IRONBOW)