Adaptador FLIR Lepton

El módulo adaptador FLIR Lepton conecta los núcleos térmicos FLIR Lepton (se venden por separado) a la OpenMV Cam, con modos AGC y térmico directo para la medición de temperatura de personas u objetos.

Adaptador FLIR Lepton

Para la hoja de datos completa, fotos y pedidos, consulta la página del producto del adaptador FLIR Lepton.

Aspectos destacados

  • Compatible con los núcleos FLIR Lepton 1.x / 2.x / 3.x (se venden por separado)

  • Modos AGC y térmico directo con mapeo de temperatura

  • Ve en total oscuridad

  • Compatible con todas las placas base modulares de la OpenMV Cam

Uso

Controla el Lepton a través de csi.CSI con cid= csi.LEPTON. El controlador escala internamente el fotograma nativo del Lepton de 80x60 (1.x/2.x) o 160x120 (3.x) al framesize que configures:

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

Para obtener fotogramas en color directamente del sensor, cambia el pixformat a csi.RGB565 y establece csi.CSI.color_palette en image.PALETTE_IRONBOW: el controlador emite fotogramas RGB565 con la paleta aplicada, de modo que snapshot() devuelve directamente fotogramas coloreados en ironbow:

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

Medición de temperatura

Los Lepton radiométricos (Lepton 2.5 / 3.5) reportan datos de temperatura calibrados por píxel. Habilita el modo de medición a través de csi.CSI.ioctl con csi.IOCTL_LEPTON_SET_MODE, luego limita la ventana de temperatura con csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). El controlador del Lepton mapea linealmente el valor de píxel en escala de grises 0 a min_celsius y 255 a max_celsius, de modo que cada píxel se convierte en una consulta de temperatura dentro de la ventana configurada. Los píxeles más fríos que min_celsius se saturan en 0, y los píxeles más calientes que max_celsius se saturan en 255.

csi.IOCTL_LEPTON_SET_MODE toma dos indicadores. El primero activa la medición; el segundo selecciona el rango de temperatura del sensor:

  • Rango bajo(True, False) — alcance del sensor de -10 °C a +140 °C (escenas a escala de una habitación). Limita la ventana al área de interés, por ejemplo (20.0, 40.0) para el seguimiento del calor corporal:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • Rango alto(True, True) — alcance del sensor de -10 °C a ~+450 °C típico (~+400 °C a temperatura ambiente) para objetos calientes. Limita a, por ejemplo, (0.0, 400.0) para el seguimiento de hornos o elementos calientes:

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

Para convertir un píxel en escala de grises de nuevo a grados Celsius:

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

Esto funciona sobre píxeles individuales o sobre estadísticas agregadas (por ejemplo, stats.mean() de Image.get_statistics) dentro de una ROI al localizar regiones calientes o frías con Image.find_blobs.

Nota

La medición de temperatura requiere que el Lepton esté en modo de escala de grises sin ninguna paleta de color configurada: el mapeo lineal de píxel a temperatura solo se mantiene sobre la salida cruda en escala de grises. Para colorear con fines de visualización, hazlo por separado dibujando el fotograma en escala de grises sobre un búfer de salida RGB con Image.draw_image y 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)