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)