FLIR Lepton Adaptörü#
FLIR Lepton Adaptör Modülü, FLIR Lepton termal çekirdeklerini (ayrı satılır) OpenMV Cam’e bağlar; insan / nesne sıcaklığı ölçümü için hem AGC hem de doğrudan termal modlara sahiptir.
Tam veri sayfası, fotoğraflar ve sipariş bilgileri için FLIR Lepton Adaptörü ürün sayfasına bakın.
Öne Çıkanlar#
FLIR Lepton 1.x / 2.x / 3.x çekirdekleriyle uyumlu (ayrı satılır)
Sıcaklık eşlemesiyle hem AGC hem de doğrudan termal modlar
Tam karanlıkta görür
Tüm modüler OpenMV Cam taban kartlarıyla uyumlu
Kullanım#
Lepton’u cid= csi.LEPTON ile csi.CSI üzerinden sürün. Sürücü, Lepton’un 80x60 (1.x/2.x) veya 160x120 (3.x) yerel çerçevesini dahili olarak ayarladığınız herhangi bir framesize değerine yükseltir:
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())
Doğrudan sensörden renklendirilmiş çerçeveler almak için pixformat değerini csi.RGB565 olarak değiştirin ve csi.CSI.color_palette değerini image.PALETTE_IRONBOW olarak ayarlayın — sürücü, paleti uygulanmış RGB565 çerçeveler üretir, böylece snapshot() doğrudan ironbow renkli çerçeveler döndürür:
csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)
Sıcaklık ölçümü#
Radyometrik Lepton’lar (Lepton 2.5 / 3.5) kalibre edilmiş piksel başına sıcaklık verisi raporlar. Ölçüm modunu csi.IOCTL_LEPTON_SET_MODE ile csi.CSI.ioctl üzerinden etkinleştirin, ardından csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius) ile sıcaklık penceresini sınırlandırın. Lepton sürücüsü, gri tonlama piksel değeri 0’ı min_celsius ile ve 255’i max_celsius ile doğrusal olarak eşler, böylece her piksel yapılandırılmış pencere içinde bir sıcaklık aramasına dönüşür. min_celsius değerinden soğuk pikseller 0’da, max_celsius değerinden sıcak pikseller 255’te doygunluğa ulaşır.
csi.IOCTL_LEPTON_SET_MODE iki bayrak alır. İlki ölçümü açar; ikincisi sensörün sıcaklık aralığını seçer:
Düşük aralık —
(True, False)— sensör aralığı-10 °Cile+140 °Carası (oda ölçekli sahneler). Pencereyi ilgi alanına göre sınırlandırın, örn. vücut ısısı takibi için(20.0, 40.0)csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
Yüksek aralık —
(True, True)— sıcak nesneler için tipik sensör aralığı-10 °Cile~+450 °Carası (oda sıcaklığında~+400 °C). Örneğin fırın veya sıcak eleman takibi için(0.0, 400.0)ile sınırlandırın:csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True) csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
Bir gri tonlama pikselini tekrar Celsius’a dönüştürmek için:
def p_to_temp(p, min_t, max_t):
return (p * (max_t - min_t)) / 255.0 + min_t
Bu, sıcak/soğuk bölgeleri Image.find_blobs ile bulurken bir ROI içindeki tek pikseller üzerinde veya toplanmış istatistikler (örn. Image.get_statistics kaynaklı stats.mean()) üzerinde çalışır.
Not
Sıcaklık ölçümü, Lepton’un hiçbir renk paleti ayarlanmamış gri tonlama modunda olmasını gerektirir — doğrusal piksel-sıcaklık eşlemesi yalnızca ham gri tonlama çıktısında geçerlidir. Görüntülemek için renklendirmeyi, gri tonlama çerçevesini Image.draw_image ve color_palette= image.PALETTE_IRONBOW ile bir RGB çıkış arabelleğine çizerek ayrıca yapın:
out = image.Image(csi0.width(), csi0.height(), image.RGB565)
out.draw_image(img, 0, 0, color_palette=image.PALETTE_IRONBOW)