FLIR Lepton 轉接板¶
FLIR Lepton 轉接模組可將 FLIR Lepton 熱成像核心(另售)連接到 OpenMV Cam,並同時提供 AGC 與直接熱成像模式,可用於人體/物體溫度量測。
完整的資料表、照片與訂購資訊請參閱 FLIR Lepton 轉接板產品頁面。
重點特色¶
相容於 FLIR Lepton 1.x/2.x/3.x 核心(另售)
同時提供 AGC 與直接熱成像模式,並具備溫度對應功能
可在全黑環境中成像
相容於所有模組化 OpenMV Cam 底板
用法¶
透過 csi.CSI 並搭配 cid= csi.LEPTON 驅動 Lepton。驅動程式會在內部將 Lepton 的 80x60(1.x/2.x)或 160x120(3.x)原生影格升頻到你所設定的任何 framesize:
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
此方法可用於個別像素,也可用於在以 Image.find_blobs 定位高溫/低溫區域時,針對 ROI 內的彙總統計值(例如來自 Image.get_statistics 的 stats.mean())運算。
備註
溫度量測要求 Lepton 處於灰階模式且未設定任何色彩調色盤 — 線性的像素對溫度對應僅在原始灰階輸出上成立。若要為顯示而上色,請另外處理:使用 Image.draw_image 並搭配 color_palette= image.PALETTE_IRONBOW,將灰階影格繪製到 RGB 輸出緩衝區上:
out = image.Image(csi0.width(), csi0.height(), image.RGB565)
out.draw_image(img, 0, 0, color_palette=image.PALETTE_IRONBOW)