thermal_overlay_lcd.py

# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Démo d'incrustation thermique
#
# Cet exemple montre comment superposer une carte de chaleur sur
# la sortie vidéo en direct de la caméra principale de votre OpenMV Cam.

import csi
import image
import time
import fir
import display

# ou image.BILINEAR ou 0 (plus proche voisin)
drawing_hint = image.BICUBIC | image.CENTER | image.SCALE_ASPECT_KEEP

ALT_OVERLAY = False  # Mettre à True pour allouer une seconde image ir.

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize((128, 160))
csi0.snapshot(time=2000)

# Initialiser le capteur thermique
fir.init()

# Initialiser l'écran LCD.
lcd = display.SPIDisplay()

# Allouer un second tampon d'image pour une vidéo plus fluide.
extra_fb = image.Image(csi0.width(), csi0.height(), csi0.pixformat())

# Horloge FPS
clock = time.clock()

while True:
    clock.tick()

    # Capturer une image
    img = csi0.snapshot()

    # Capturer les données FIR
    # ta : Température ambiante
    # ir : Températures des objets (tableau IR)
    # to_min : Température minimale de l'objet
    # to_max : Température maximale de l'objet
    try:
        ta, ir, to_min, to_max = fir.read_ir()
    except OSError:
        continue

    if not ALT_OVERLAY:
        # Mettre à l'échelle l'image et la mélanger avec le tampon d'image
        fir.draw_ir(img, ir, hint=drawing_hint)
    else:
        # Créer une image secondaire puis la fusionner dans le tampon d'image.
        extra_fb.clear()
        fir.draw_ir(extra_fb, ir, hint=drawing_hint)
        img.blend(extra_fb, alpha=128)

    # Dessiner les températures ambiante, minimale et maximale.
    img.draw_string((8, 0), "Ta: %0.2f C" % ta, color=(255, 0, 0), mono_space=False)
    img.draw_string(
        (8, 8), "To min: %0.2f C" % to_min, color=(255, 0, 0), mono_space=False
    )
    img.draw_string(
        (8, 16), "To max: %0.2f C" % to_max, color=(255, 0, 0), mono_space=False
    )

    lcd.write(img)
    # Forcer un streaming haute qualité...
    img.to_jpeg(quality=90)

    # Afficher le FPS.
    print(clock.fps())

results matching ""

    No results matching ""