FLIR Lepton-adapter

FLIR Lepton-adaptermodulen ansluter FLIR Lepton-värmekärnor (säljs separat) till OpenMV Cam, med både AGC- och direkt-värmeläge för temperaturmätning av människor/objekt.

FLIR Lepton-adapter

För fullständigt datablad, foton och beställning, se produktsidan för FLIR Lepton-adapter.

Höjdpunkter

  • Kompatibel med FLIR Lepton 1.x / 2.x / 3.x-kärnor (säljs separat)

  • Både AGC- och direkt-värmeläge med temperaturmappning

  • Ser i totalt mörker

  • Kompatibel med alla modulära OpenMV Cam-baskort

Användning

Styr Lepton via csi.CSI med cid= csi.LEPTON. Drivrutinen skalar internt upp Leptons inbyggda bildruta på 80x60 (1.x/2.x) eller 160x120 (3.x) till vilken framesize du än ställer in:

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

För att få färglagda bildrutor direkt från sensorn, byt pixformat till csi.RGB565 och ställ in csi.CSI.color_palette till image.PALETTE_IRONBOW — drivrutinen genererar RGB565-bildrutor med paletten tillämpad, så snapshot() returnerar ironbow-färgade bildrutor direkt:

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

Temperaturmätning

Radiometriska Lepton-kärnor (Lepton 2.5 / 3.5) rapporterar kalibrerade temperaturdata per pixel. Aktivera mätläge via csi.CSI.ioctl med csi.IOCTL_LEPTON_SET_MODE, och begränsa sedan temperaturfönstret med csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). Lepton-drivrutinen mappar linjärt gråskalepixelvärdet 0 till min_celsius och 255 till max_celsius, så att varje pixel blir en temperaturuppslagning inom det konfigurerade fönstret. Pixlar kallare än min_celsius mättas vid 0, pixlar varmare än max_celsius mättas vid 255.

csi.IOCTL_LEPTON_SET_MODE tar två flaggor. Den första aktiverar mätning; den andra väljer sensorns temperaturintervall:

  • Lågt intervall(True, False) — sensorspann -10 °C till +140 °C (rumsskaliga scener). Begränsa fönstret till intresseområdet, t.ex. (20.0, 40.0) för spårning av kroppsvärme:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • Högt intervall(True, True) — sensorspann -10 °C till typiskt ~+450 °C (~+400 °C vid rumstemperatur) för heta objekt. Begränsa till t.ex. (0.0, 400.0) för spårning av ugn eller heta element:

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

För att konvertera en gråskalepixel tillbaka till Celsius:

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

Detta fungerar på enskilda pixlar eller på aggregerad statistik (t.ex. stats.mean() från Image.get_statistics) inom ett ROI när du lokaliserar heta/kalla områden med Image.find_blobs.

Anteckning

Temperaturmätning kräver att Lepton är i gråskaleläge utan någon färgpalett inställd — den linjära pixel-till-temperatur-mappningen gäller endast på den råa gråskaleutdatan. För att färglägga för visning, gör det separat genom att rita gråskalebildrutan på en RGB-utdatabuffert med Image.draw_image och 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)