Adaptador FLIR Lepton

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

Adaptador FLIR Lepton

Para o datasheet completo, fotos e informações de compra, consulte a página do produto Adaptador FLIR Lepton.

Destaques

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

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

  • Enxerga na escuridão total

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

Uso

Controle o Lepton através de csi.CSI com cid= csi.LEPTON. O driver faz internamente o upscale do quadro nativo do Lepton de 80x60 (1.x/2.x) ou 160x120 (3.x) para qualquer framesize que você 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 quadros colorizados diretamente do sensor, mude o pixformat para csi.RGB565 e defina csi.CSI.color_palette como image.PALETTE_IRONBOW — o driver emite quadros RGB565 com a paleta aplicada, de modo que snapshot() retorna quadros coloridos em 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. Habilite o modo de medição através de csi.CSI.ioctl com csi.IOCTL_LEPTON_SET_MODE e, em seguida, limite a janela de temperatura com csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). O driver Lepton mapeia linearmente o valor de pixel em escala de cinza 0 para min_celsius e 255 para max_celsius, de modo que cada pixel se torna uma consulta de temperatura dentro da janela configurada. Pixels mais frios que min_celsius saturam em 0, e pixels mais quentes que max_celsius saturam em 255.

csi.IOCTL_LEPTON_SET_MODE recebe dois flags. O primeiro ativa a medição; o segundo seleciona a faixa de temperatura do sensor:

  • Faixa baixa(True, False) — abrangência do sensor de -10 °C a +140 °C (cenas em escala de ambiente). Limite a janela à área de interesse, por exemplo (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)
    
  • Faixa alta(True, True) — abrangência do sensor de -10 °C a ~+450 °C típica (~+400 °C à temperatura ambiente) para objetos quentes. Limite a, por exemplo, (0.0, 400.0) para rastreamento de fornalhas ou elementos quentes:

    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 cinza de volta para Celsius:

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

Isso funciona em pixels individuais ou em estatísticas agregadas (por exemplo, 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 cinza, sem nenhuma paleta de cores definida — o mapeamento linear de pixel para temperatura só é válido na saída bruta em escala de cinza. Para colorizar para exibição, faça isso separadamente desenhando o quadro em escala de cinza sobre um 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)