Adaptateur FLIR Lepton

Le module adaptateur FLIR Lepton connecte les cœurs thermiques FLIR Lepton (vendus séparément) à l’OpenMV Cam, avec les modes AGC et thermique direct pour la mesure de température des personnes et des objets.

Adaptateur FLIR Lepton

Pour la fiche technique complète, les photos et les commandes, consultez la page produit de l’adaptateur FLIR Lepton.

Points forts

  • Compatible avec les cœurs FLIR Lepton 1.x / 2.x / 3.x (vendus séparément)

  • Modes AGC et thermique direct avec mappage de température

  • Voit dans l’obscurité totale

  • Compatible avec toutes les cartes de base modulaires OpenMV Cam

Utilisation

Pilotez le Lepton via csi.CSI avec cid= csi.LEPTON. Le pilote suréchantillonne en interne la trame native du Lepton de 80x60 (1.x/2.x) ou 160x120 (3.x) vers la framesize que vous définissez

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

Pour obtenir des trames colorisées directement depuis le capteur, basculez le pixformat sur csi.RGB565 et réglez csi.CSI.color_palette sur image.PALETTE_IRONBOW — le pilote émet des trames RGB565 avec la palette appliquée, de sorte que snapshot() renvoie directement des trames colorisées en ironbow

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

Mesure de température

Les Leptons radiométriques (Lepton 2.5 / 3.5) fournissent des données de température calibrées par pixel. Activez le mode de mesure via csi.CSI.ioctl avec csi.IOCTL_LEPTON_SET_MODE, puis bornez la fenêtre de température avec csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). Le pilote Lepton mappe linéairement la valeur de pixel en niveaux de gris 0 sur min_celsius et 255 sur max_celsius, de sorte que chaque pixel devient une recherche de température dans la fenêtre configurée. Les pixels plus froids que min_celsius saturent à 0, les pixels plus chauds que max_celsius saturent à 255.

csi.IOCTL_LEPTON_SET_MODE prend deux indicateurs. Le premier active la mesure ; le second sélectionne la plage de température du capteur :

  • Plage basse(True, False) — étendue du capteur de -10 °C à +140 °C (scènes à l’échelle d’une pièce). Bornez la fenêtre à la zone d’intérêt, par exemple (20.0, 40.0) pour le suivi de la chaleur corporelle

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • Plage haute(True, True) — étendue du capteur de -10 °C à ~+450 °C typique (~+400 °C à température ambiante) pour les objets chauds. Bornez par exemple à (0.0, 400.0) pour le suivi d’un four ou d’un élément chauffant

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

Pour reconvertir un pixel en niveaux de gris en degrés Celsius

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

Cela fonctionne sur des pixels individuels ou sur des statistiques agrégées (par exemple stats.mean() issu de Image.get_statistics) au sein d’une ROI lors de la localisation de régions chaudes/froides avec Image.find_blobs.

Note

La mesure de température nécessite que le Lepton soit en mode niveaux de gris sans palette de couleurs définie — le mappage linéaire pixel-vers-température n’est valide que sur la sortie brute en niveaux de gris. Pour coloriser à l’affichage, faites-le séparément en dessinant la trame en niveaux de gris sur un tampon de sortie RGB avec Image.draw_image et 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)