Адаптер 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)