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.

Adapter FLIR Lepton

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 °C do +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 °C do ~+450 °C (~+400 °C w 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)