in_memory_basic_frame_differencing.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 base di differenza tra fotogrammi in memoria
#
# Questo esempio dimostra l'uso della differenza tra fotogrammi con la OpenMV Cam. Viene
# chiamata differenza base tra fotogrammi perché non c'è aggiornamento dell'immagine di sfondo.
# Quindi, con il passare del tempo l'immagine di sfondo può cambiare, causando problemi.
import csi
import image
import time
TRIGGER_THRESHOLD = 5
csi0 = csi.CSI()
csi0.reset() # Resetta e inizializza il sensore.
csi0.pixformat(csi.RGB565) # oppure csi.RGB565
csi0.framesize(csi.QVGA) # oppure csi.QQVGA (o altri)
csi0.snapshot(time=2000) # Lasciare che le nuove impostazioni abbiano effetto.
csi0.auto_whitebal(False) # Disattiva il bilanciamento del bianco.
clock = time.clock() # Traccia gli FPS.
# Crea un secondo frame buffer nell'heap.
extra_fb = image.Image(csi0.width(), csi0.height(), csi0.pixformat())
print("About to save background image...")
csi0.snapshot(time=2000) # Dai all'utente il tempo di prepararsi.
extra_fb.draw_image(csi0.snapshot())
print("Saved background image - Now frame differencing!")
while True:
clock.tick() # Traccia i millisecondi trascorsi tra le chiamate a snapshot().
img = csi0.snapshot() # Scatta una foto e restituisce l'immagine.
# Sostituisce l'immagine con la differenza tra fotogrammi "abs(NEW-OLD)".
img.difference(extra_fb)
hist = img.get_histogram()
# Il codice seguente funziona confrontando il valore del 99° percentile (ad es. il
# valore massimo non outlier) con il valore del 90° percentile (ad es. un valore
# non massimo). La differenza tra i due valori aumenterà man mano che la differenza
# dell'immagine mostra un numero maggiore di pixel cambiati.
diff = hist.get_percentile(0.99).l_value - hist.get_percentile(0.90).l_value
triggered = diff > TRIGGER_THRESHOLD
print(clock.fps(), triggered) # Nota: la tua OpenMV Cam funziona a circa metà velocità quando
# è collegata al computer. Il framerate dovrebbe aumentare una volta scollegata.