Adaptador FLIR Lepton

O Módulo Adaptador FLIR Lepton liga os núcleos térmicos FLIR Lepton (vendidos separadamente) à OpenMV Cam, com modos AGC e térmico direto para medição de temperatura de pessoas e objetos.

FLIR Lepton Adapter

Para a ficha técnica completa, fotografias e informações de encomenda, consulte a página de produto do Adaptador FLIR Lepton.

Destaques

  • Compatível com núcleos FLIR Lepton 1.x / 2.x / 3.x (vendidos separadamente)

  • Modos AGC e térmico direto com mapeamento de temperatura

  • Funciona em escuridão total

  • Compatível com todas as placas base modulares OpenMV Cam

Utilização

Controle o Lepton através de csi.CSI com cid= csi.LEPTON. O controlador amplia internamente o fotograma nativo do Lepton de 80x60 (1.x/2.x) ou 160x120 (3.x) para o tamanho de fotograma que definir:

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 obter fotogramas coloridos diretamente do sensor, mude o pixformat para csi.RGB565 e defina csi.CSI.color_palette como image.PALETTE_IRONBOW — o controlador emite fotogramas RGB565 com a paleta aplicada, pelo que snapshot() devolve fotogramas com as cores ironbow diretamente:

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

Medição de temperatura

Os Leptons radiométricos (Lepton 2.5 / 3.5) reportam dados de temperatura calibrados por pixel. Ative o modo de medição através de csi.CSI.ioctl com csi.IOCTL_LEPTON_SET_MODE, depois limite a janela de temperatura com csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). O controlador do Lepton mapeia linearmente o valor de pixel em escala de cinzentos 0 para min_celsius e 255 para max_celsius, pelo que cada pixel se torna uma consulta de temperatura dentro da janela configurada. Os pixels mais frios do que min_celsius saturam em 0; os pixels mais quentes do que max_celsius saturam em 255.

csi.IOCTL_LEPTON_SET_MODE aceita dois indicadores. O primeiro ativa a medição; o segundo seleciona a gama de temperatura do sensor:

  • Gama baixa(True, False) — amplitude do sensor de -10 °C a +140 °C (cenas à escala ambiente). Limite a janela à área de interesse, p. ex. (20.0, 40.0) para rastreamento de calor corporal:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • Gama alta(True, True) — amplitude do sensor de -10 °C a ~+450 °C típico (~+400 °C à temperatura ambiente) para objetos quentes. Limite para p. ex. (0.0, 400.0) para rastreamento de fornos ou elementos aquecidos:

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

Para converter um pixel em escala de cinzentos de volta para Celsius:

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

Isto funciona em pixels individuais ou em estatísticas agregadas (p. ex. stats.mean() de Image.get_statistics) dentro de uma ROI ao localizar regiões quentes/frias com Image.find_blobs.

Nota

A medição de temperatura requer o Lepton em modo de escala de cinzentos sem paleta de cores definida — o mapeamento linear pixel-para-temperatura só é válido para a saída em escala de cinzentos em bruto. Para colorizar para visualização, faça-o separadamente desenhando o fotograma em escala de cinzentos num buffer de saída RGB com Image.draw_image e 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)