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.
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 °Ca+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 °Ca~+450 °Ctí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)