FLIR Lepton-adapter¶
De FLIR Lepton Adapter Module verbindt FLIR Lepton-thermische cores (apart verkrijgbaar) met de OpenMV Cam, met zowel AGC- als directe-thermische modi voor temperatuurmeting van mensen / objecten.
Voor de volledige datasheet, foto’s en bestelinformatie, zie de FLIR Lepton-adapter productpagina.
Hoogtepunten¶
Compatibel met FLIR Lepton 1.x / 2.x / 3.x cores (apart verkrijgbaar)
Zowel AGC- als directe-thermische modi met temperatuurtoewijzing
Ziet in volledige duisternis
Compatibel met alle modulaire OpenMV Cam-basisborden
Gebruik¶
Stuur de Lepton aan via csi.CSI met cid= csi.LEPTON. De driver schaalt het native frame van de Lepton van 80x60 (1.x/2.x) of 160x120 (3.x) intern op naar elke framesize die u instelt:
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())
Om gekleurde frames rechtstreeks vanuit de sensor te krijgen, schakelt u het pixformat over naar csi.RGB565 en stelt u csi.CSI.color_palette in op image.PALETTE_IRONBOW — de driver levert RGB565-frames met het palet toegepast, zodat snapshot() direct ironbow-gekleurde frames retourneert:
csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)
Temperatuurmeting¶
Radiometrische Leptons (Lepton 2.5 / 3.5) rapporteren gekalibreerde temperatuurgegevens per pixel. Schakel de meetmodus in via csi.CSI.ioctl met csi.IOCTL_LEPTON_SET_MODE en begrens vervolgens het temperatuurvenster met csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). De Lepton-driver wijst de grijswaarde-pixelwaarde 0 lineair toe aan min_celsius en 255 aan max_celsius, zodat elke pixel een temperatuuropzoeking wordt binnen het geconfigureerde venster. Pixels die kouder zijn dan min_celsius verzadigen op 0, pixels die heter zijn dan max_celsius verzadigen op 255.
csi.IOCTL_LEPTON_SET_MODE neemt twee vlaggen aan. De eerste schakelt de meting in; de tweede selecteert het temperatuurbereik van de sensor:
Laag bereik —
(True, False)— sensorbereik-10 °Ctot+140 °C(kamergrootte-scènes). Begrens het venster tot het aandachtsgebied, bijv.(20.0, 40.0)voor het volgen van lichaamswarmte:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
Hoog bereik —
(True, True)— sensorbereik typisch-10 °Ctot~+450 °C(~+400 °Cbij kamertemperatuur) voor hete objecten. Begrens tot bijv.(0.0, 400.0)voor het volgen van een oven of heet element:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
Om een grijswaarde-pixel terug te converteren naar Celsius:
def p_to_temp(p, min_t, max_t):
return (p * (max_t - min_t)) / 255.0 + min_t
Dit werkt op individuele pixels of op geaggregeerde statistieken (bijv. stats.mean() van Image.get_statistics) binnen een ROI bij het lokaliseren van hete/koude gebieden met Image.find_blobs.
Notitie
Temperatuurmeting vereist de Lepton in grijswaardenmodus zonder ingesteld kleurpalet — de lineaire pixel-naar-temperatuurtoewijzing geldt alleen op de ruwe grijswaarden-uitvoer. Om voor weergave in te kleuren, doet u dit afzonderlijk door het grijswaarden-frame op een RGB-uitvoerbuffer te tekenen met Image.draw_image en 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)