Adapter FLIR Lepton¶
Moduł adaptera FLIR Lepton podłącza rdzenie termowizyjne FLIR Lepton (sprzedawane osobno) do OpenMV Cam, oferując zarówno tryb AGC, jak i tryb bezpośredniego pomiaru termicznego do pomiaru temperatury ludzi i obiektów.
Pełną kartę katalogową, zdjęcia oraz informacje o zamówieniu znajdziesz na stronie produktu adaptera FLIR Lepton.
Najważniejsze cechy¶
Zgodny z rdzeniami FLIR Lepton 1.x / 2.x / 3.x (sprzedawane osobno)
Zarówno tryb AGC, jak i tryb bezpośredniego pomiaru termicznego z mapowaniem temperatury
Widzi w całkowitej ciemności
Zgodny ze wszystkimi modularnymi płytami bazowymi OpenMV Cam
Użycie¶
Steruj Leptonem poprzez csi.CSI z parametrem cid= csi.LEPTON. Sterownik wewnętrznie skaluje natywną ramkę Leptona 80x60 (1.x/2.x) lub 160x120 (3.x) do dowolnego ustawionego rozmiaru ramki:
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())
Aby otrzymywać kolorowane ramki bezpośrednio z sensora, przełącz pixformat na csi.RGB565 i ustaw csi.CSI.color_palette na image.PALETTE_IRONBOW — sterownik generuje ramki RGB565 z zastosowaną paletą, więc snapshot() zwraca bezpośrednio ramki w kolorystyce ironbow:
csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)
Pomiar temperatury¶
Radiometryczne Leptony (Lepton 2.5 / 3.5) raportują skalibrowane dane temperatury dla każdego piksela. Włącz tryb pomiaru poprzez csi.CSI.ioctl z csi.IOCTL_LEPTON_SET_MODE, a następnie ogranicz okno temperatury za pomocą csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). Sterownik Leptona liniowo mapuje wartość piksela w skali szarości 0 na min_celsius, a 255 na max_celsius, więc każdy piksel staje się odczytem temperatury w skonfigurowanym oknie. Piksele chłodniejsze niż min_celsius nasycają się przy 0, a piksele cieplejsze niż max_celsius nasycają się przy 255.
csi.IOCTL_LEPTON_SET_MODE przyjmuje dwie flagi. Pierwsza włącza pomiar; druga wybiera zakres temperatur sensora:
Niski zakres —
(True, False)— rozpiętość sensora od-10 °Cdo+140 °C(sceny w skali pomieszczenia). Ogranicz okno do obszaru zainteresowania, np.(20.0, 40.0)do śledzenia ciepła ciała:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
Wysoki zakres —
(True, True)— rozpiętość sensora typowo od-10 °Cdo~+450 °C(~+400 °Cw temperaturze pokojowej) dla gorących obiektów. Ogranicz np. do(0.0, 400.0)do śledzenia pieca lub gorących elementów:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
Aby przeliczyć piksel w skali szarości z powrotem na stopnie Celsjusza:
def p_to_temp(p, min_t, max_t):
return (p * (max_t - min_t)) / 255.0 + min_t
Działa to na pojedynczych pikselach lub na zagregowanych statystykach (np. stats.mean() z Image.get_statistics) wewnątrz obszaru ROI podczas lokalizowania gorących/chłodnych obszarów za pomocą Image.find_blobs.
Informacja
Pomiar temperatury wymaga Leptona w trybie skali szarości bez ustawionej palety kolorów — liniowe mapowanie piksel-temperatura obowiązuje wyłącznie na surowym wyjściu w skali szarości. Aby pokolorować obraz do wyświetlenia, zrób to osobno, rysując ramkę w skali szarości na buforze wyjściowym RGB za pomocą Image.draw_image z 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)