mjpeg_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 MJPEG su rilevamento del volto
#
# Nota: per eseguire questo esempio è necessaria una scheda SD.
#
# Puoi usare la tua OpenMV Cam per registrare file mjpeg. Puoi fornire al
# oggetto recorder fotogrammi JPEG oppure fotogrammi RGB565/scala di grigi. Una volta terminata
# la registrazione di un file Mjpeg puoi usare VLC per riprodurlo. Se usi Ubuntu allora
# funzionerà anche il lettore video integrato.
#
# Questo esempio mostra come usare il tracciamento del volto sulla tua OpenMV Cam per registrare un
# mjpeg.

import csi
import image
import time
import mjpeg
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.QQVGA)  # Imposta la dimensione del fotogramma su QQVGA (160x120)
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()
    m = mjpeg.Mjpeg("example-%d.mjpeg" % random.getrandbits(32))

    clock = time.clock()  # Traccia gli FPS.
    for i in range(200):
        clock.tick()
        m.write(csi0.snapshot())
        print(clock.fps())

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

results matching ""

    No results matching ""