Адаптер FLIR Lepton#
Модуль адаптера FLIR Lepton підключає тепловізійні модулі FLIR Lepton (продаються окремо) до OpenMV Cam і підтримує як режим AGC, так і режим прямого теплового вимірювання температури людини та об’єктів.
Повний технічний опис, фотографії та інформацію про замовлення дивіться на сторінці продукту 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)