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