FLIR Lepton-adapter¶
FLIR Lepton-adaptermodulen ansluter FLIR Lepton-värmekärnor (säljs separat) till OpenMV Cam, med både AGC- och direkt-värmeläge för temperaturmätning av människor/objekt.
För fullständigt datablad, foton och beställning, se produktsidan för FLIR Lepton-adapter.
Höjdpunkter¶
Kompatibel med FLIR Lepton 1.x / 2.x / 3.x-kärnor (säljs separat)
Både AGC- och direkt-värmeläge med temperaturmappning
Ser i totalt mörker
Kompatibel med alla modulära OpenMV Cam-baskort
Användning¶
Styr Lepton via csi.CSI med cid= csi.LEPTON. Drivrutinen skalar internt upp Leptons inbyggda bildruta på 80x60 (1.x/2.x) eller 160x120 (3.x) till vilken framesize du än ställer in:
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())
För att få färglagda bildrutor direkt från sensorn, byt pixformat till csi.RGB565 och ställ in csi.CSI.color_palette till image.PALETTE_IRONBOW — drivrutinen genererar RGB565-bildrutor med paletten tillämpad, så snapshot() returnerar ironbow-färgade bildrutor direkt:
csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)
Temperaturmätning¶
Radiometriska Lepton-kärnor (Lepton 2.5 / 3.5) rapporterar kalibrerade temperaturdata per pixel. Aktivera mätläge via csi.CSI.ioctl med csi.IOCTL_LEPTON_SET_MODE, och begränsa sedan temperaturfönstret med csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). Lepton-drivrutinen mappar linjärt gråskalepixelvärdet 0 till min_celsius och 255 till max_celsius, så att varje pixel blir en temperaturuppslagning inom det konfigurerade fönstret. Pixlar kallare än min_celsius mättas vid 0, pixlar varmare än max_celsius mättas vid 255.
csi.IOCTL_LEPTON_SET_MODE tar två flaggor. Den första aktiverar mätning; den andra väljer sensorns temperaturintervall:
Lågt intervall —
(True, False)— sensorspann-10 °Ctill+140 °C(rumsskaliga scener). Begränsa fönstret till intresseområdet, t.ex.(20.0, 40.0)för spårning av kroppsvärme:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
Högt intervall —
(True, True)— sensorspann-10 °Ctill typiskt~+450 °C(~+400 °Cvid rumstemperatur) för heta objekt. Begränsa till t.ex.(0.0, 400.0)för spårning av ugn eller heta element:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
För att konvertera en gråskalepixel tillbaka till Celsius:
def p_to_temp(p, min_t, max_t):
return (p * (max_t - min_t)) / 255.0 + min_t
Detta fungerar på enskilda pixlar eller på aggregerad statistik (t.ex. stats.mean() från Image.get_statistics) inom ett ROI när du lokaliserar heta/kalla områden med Image.find_blobs.
Anteckning
Temperaturmätning kräver att Lepton är i gråskaleläge utan någon färgpalett inställd — den linjära pixel-till-temperatur-mappningen gäller endast på den råa gråskaleutdatan. För att färglägga för visning, gör det separat genom att rita gråskalebildrutan på en RGB-utdatabuffert med Image.draw_image och 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)