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.
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 °Cpâ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 °Cpână la~+450 °Ctipic (~+400 °Cla 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)