Адаптер FLIR Lepton

Модуль адаптера FLIR Lepton підключає тепловізійні модулі FLIR Lepton (продаються окремо) до OpenMV Cam і підтримує як режим AGC, так і режим прямого теплового вимірювання температури людини та об’єктів.

FLIR Lepton Adapter

Повний технічний опис, фотографії та інформацію про замовлення дивіться на сторінці продукту FLIR Lepton Adapter.

Ключові можливості

  • Сумісний із модулями FLIR Lepton 1.x / 2.x / 3.x (продаються окремо)

  • Підтримка режимів AGC і прямого теплового вимірювання з температурним відображенням

  • Бачить у повній темряві

  • Сумісний з усіма модульними базовими платами OpenMV Cam

Використання

Керуйте Lepton через csi.CSI із cid= csi.LEPTON. Драйвер автоматично масштабує нативний кадр Lepton 80x60 (1.x/2.x) або 160x120 (3.x) до будь-якого встановленого розміру кадру:

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())

Щоб отримувати кольорові кадри безпосередньо з датчика, переключіть pixformat на csi.RGB565 і встановіть csi.CSI.color_palette на image.PALETTE_IRONBOW — драйвер видає кадри RGB565 із застосованою палітрою, тому snapshot() повертає кадри з кольоровою схемою ironbow безпосередньо:

csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)

Вимірювання температури

Радіометричні модулі Lepton (Lepton 2.5 / 3.5) надають відкалібровані дані про температуру кожного пікселя. Увімкніть режим вимірювання через csi.CSI.ioctl із csi.IOCTL_LEPTON_SET_MODE, потім обмежте температурне вікно за допомогою csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). Драйвер Lepton лінійно відображає значення пікселя у відтінках сірого 0 на min_celsius і 255 на max_celsius, тому кожен піксель стає значенням температури в межах налаштованого вікна. Пікселі, холодніші за min_celsius, насичуються до 0, а гарячіші за max_celsius — до 255.

csi.IOCTL_LEPTON_SET_MODE приймає два прапори. Перший вмикає вимірювання; другий вибирає температурний діапазон датчика:

  • Низький діапазон(True, False) — діапазон датчика від -10 °C до +140 °C (для сцен кімнатного масштабу). Обмежте вікно до потрібної ділянки, наприклад (20.0, 40.0) для відстеження температури тіла:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • Високий діапазон(True, True) — діапазон датчика від -10 °C до ~+450 °C типово (~+400 °C при кімнатній температурі) для гарячих об’єктів. Обмежте, наприклад, до (0.0, 400.0) для відстеження печей або нагрівальних елементів:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
    

Щоб перетворити значення пікселя у відтінках сірого назад у градуси Цельсія:

def p_to_temp(p, min_t, max_t):
    return (p * (max_t - min_t)) / 255.0 + min_t

Це працює як для окремих пікселів, так і для агрегованої статистики (наприклад, stats.mean() із Image.get_statistics) всередині ROI при пошуку гарячих/холодних областей за допомогою Image.find_blobs.

Примітка

Вимірювання температури вимагає, щоб Lepton працював у режимі відтінків сірого без встановленої колірної палітри — лінійне відображення пікселів у температуру справедливе лише для необробленого виводу у відтінках сірого. Для відображення з кольором зробіть це окремо, намалювавши кадр у відтінках сірого на кольоровий вихідний буфер RGB за допомогою Image.draw_image із 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)