Adaptor FLIR Lepton#

Modulul de adaptor FLIR Lepton conectează nucleele termice FLIR Lepton (comercializate separat) la OpenMV Cam, oferind atât modul AGC, cât și mod termic direct pentru măsurarea temperaturii persoanelor / obiectelor.

FLIR Lepton Adapter

Pentru fișa tehnică completă, fotografii și informații de comandă, consultă pagina de produs a adaptorului FLIR Lepton.

Aspecte importante#

  • Compatibil cu nucleele FLIR Lepton 1.x / 2.x / 3.x (comercializate separat)

  • Atât mod AGC, cât și mod termic direct, cu mapare a temperaturii

  • Vede în întuneric complet

  • Compatibil cu toate plăcile de bază modulare OpenMV Cam

Utilizare#

Controlează modulul Lepton prin csi.CSI cu cid= csi.LEPTON. Driverul mărește intern cadrul nativ al modulului Lepton, de 80x60 (1.x/2.x) sau 160x120 (3.x), la orice dimensiune de cadru setezi:

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

Pentru a obține cadre colorate direct de la senzor, schimbă pixformat în csi.RGB565 și setează csi.CSI.color_palette la image.PALETTE_IRONBOW — driverul emite cadre RGB565 cu paleta aplicată, astfel încât snapshot() returnează direct cadre colorate în paleta ironbow:

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

Măsurarea temperaturii#

Modulele Lepton radiometrice (Lepton 2.5 / 3.5) raportează date calibrate de temperatură per pixel. Activează modul de măsurare prin csi.CSI.ioctl cu csi.IOCTL_LEPTON_SET_MODE, apoi limitează fereastra de temperatură cu csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). Driverul Lepton mapează liniar valoarea de pixel în tonuri de gri 0 la min_celsius și 255 la max_celsius, astfel încât fiecare pixel devine o căutare de temperatură în cadrul ferestrei configurate. Pixelii mai reci decât min_celsius se saturează la 0, iar pixelii mai calzi decât max_celsius se saturează la 255.

csi.IOCTL_LEPTON_SET_MODE primește două indicatoare. Primul activează măsurarea; al doilea selectează intervalul de temperatură al senzorului:

  • Interval scăzut(True, False) — domeniul senzorului -10 °C până la +140 °C (scene la scară de cameră). Limitează fereastra la zona de interes, de exemplu (20.0, 40.0) pentru urmărirea căldurii corporale:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • Interval ridicat(True, True) — domeniul senzorului -10 °C până la ~+450 °C tipic (~+400 °C la temperatura camerei) pentru obiecte fierbinți. Limitează la, de exemplu, (0.0, 400.0) pentru urmărirea cuptoarelor sau a elementelor încinse:

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

Pentru a converti un pixel în tonuri de gri înapoi în grade Celsius:

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

Acest lucru funcționează pe pixeli individuali sau pe statistici agregate (de exemplu stats.mean() din Image.get_statistics) în cadrul unui ROI, atunci când localizezi regiuni fierbinți/reci cu Image.find_blobs.

Notă

Măsurarea temperaturii necesită ca modulul Lepton să fie în mod tonuri de gri, fără paletă de culoare setată — maparea liniară pixel-la-temperatură este valabilă doar pe ieșirea brută în tonuri de gri. Pentru a coloriza în vederea afișării, fă acest lucru separat, desenând cadrul în tonuri de gri pe un tampon de ieșire RGB cu Image.draw_image și 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)