gif_on_face_detection.py

# Questo lavoro è concesso in licenza MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tutti i diritti riservati.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Esempio di registrazione video GIF su rilevamento del volto
#
# Nota: per eseguire questo esempio è necessaria una scheda SD.
#
# Puoi usare la tua OpenMV Cam per registrare file gif. Puoi fornire al
# oggetto recorder fotogrammi RGB565 oppure fotogrammi in scala di grigi. Usa un software di editing fotografico
# come GIMP per comprimere e ottimizzare la Gif prima di caricarla sul web.
#
# Questo esempio mostra come usare il tracciamento del volto sulla tua OpenMV Cam per registrare un
# gif.

import csi
import image
import time
import gif
import machine
import random

csi0 = csi.CSI()
csi0.reset()  # Inizializza il sensore della fotocamera.
csi0.pixformat(csi.GRAYSCALE)  # Imposta il formato pixel su RGB565 (o GRAYSCALE)
csi0.framesize(csi.QVGA)  # Imposta la dimensione del fotogramma su QVGA
csi0.snapshot(time=2000)  # Attendi che le impostazioni abbiano effetto.

led = machine.LED("LED_RED")

# Carica un HaarCascade per il rilevamento del volto. Questo è un oggetto che la tua OpenMV Cam
# può usare per rilevare volti tramite il metodo find_features() qui sotto. La tua OpenMV
# Cam ha l'HaarCascade frontalface integrato. Per impostazione predefinita, tutti gli stadi dell'
# HaarCascade vengono caricati. Tuttavia, puoi regolare il numero di stadi per velocizzare
# l'elaborazione a scapito della precisione. L'HaarCascade frontalface ha 25
# stadi.
face_cascade = image.HaarCascade("/rom/haarcascade_frontalface.cascade", stages=25)

while True:
    print("About to start detecting faces...")
    csi0.snapshot(time=2000)  # Dai all'utente il tempo di prepararsi.

    print("Now detecting faces!")

    diff = 10  # Diremo di aver rilevato un volto dopo 10 fotogrammi.
    while diff:
        img = csi0.snapshot()
        # La soglia può essere compresa tra 0.0 e 1.0. Una soglia più alta produce un
        # tasso di rilevamento più alto con più falsi positivi. Il valore di scala
        # controlla la scala di corrispondenza permettendo di rilevare volti più piccoli.
        faces = img.find_features(face_cascade, threshold=0.5, scale=1.5)

        if faces:
            diff -= 1
            for r in faces:
                img.draw_rectangle(r)

    led.on()
    g = gif.Gif("example-%d.gif" % random.getrandbits(32), loop=True)

    clock = time.clock()  # Traccia gli FPS.
    for i in range(100):
        clock.tick()
        # clock.avg() restituisce i millisecondi tra i fotogrammi - il ritardo della gif è in
        g.add_frame(csi0.snapshot(), delay=int(clock.avg() / 10))  # centesimi di secondo.
        print(clock.fps())

    g.close()
    led.off()
    print("Restarting...")

results matching ""

    No results matching ""