snapshot_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 scatto al rilevamento del volto
#
# Nota: per eseguire questo esempio è necessaria una scheda SD.
#
# Questo esempio mostra come usare il tracciamento del volto sulla tua OpenMV Cam per registrare un
# foto.

import csi
import image
import random
import machine

csi0 = csi.CSI()
csi0.reset()  # Resetta e inizializza il sensore.
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()
    print("Face detected! Saving image...")
    csi0.snapshot().save("snapshot-%d.jpg" % random.getrandbits(32))  # Salva la foto.
    led.off()

results matching ""

    No results matching ""