on_disk_structural_similarity.py
# Dieses Werk ist unter der MIT-Lizenz lizenziert.
# Copyright (c) 2013-2023 OpenMV LLC. Alle Rechte vorbehalten.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Beispiel für strukturelle Ähnlichkeit (SSIM)
#
# Hinweis: Für dieses Beispiel wird eine SD-Karte benötigt.
#
# Dieses Beispiel zeigt, wie der SSIM-Algorithmus auf Ihrer OpenMV Cam verwendet wird,
# um Unterschiede zwischen zwei Bildern zu erkennen. Der SSIM-Algorithmus vergleicht
# 8x8-Pixelblöcke zwischen zwei Bildern, um einen Ähnlichkeits-
# wert zwischen zwei Bildern zu bestimmen.
import csi
import os
import time
# Das Bild hat sich wahrscheinlich geändert, wenn sim.min niedriger als dieser Wert ist.
MIN_TRIGGER_THRESHOLD = -0.4
csi0 = csi.CSI()
csi0.reset() # Sensor zurücksetzen und initialisieren.
csi0.pixformat(csi.RGB565) # oder csi.RGB565
csi0.framesize(csi.QVGA) # oder csi.QQVGA (oder andere)
csi0.snapshot(time=2000) # Neue Einstellungen wirksam werden lassen.
csi0.auto_whitebal(False) # Weißabgleich ausschalten.
clock = time.clock() # Verfolgt die FPS.
if "temp" not in os.listdir():
os.mkdir("temp") # Ein temporäres Verzeichnis erstellen
print("About to save background image...")
csi0.snapshot(time=2000) # Dem Benutzer Zeit geben, sich bereitzumachen.
csi0.snapshot().save("temp/bg.bmp")
print("Saved background image!")
while True:
clock.tick() # Erfasst die vergangenen Millisekunden zwischen den Aufrufen von snapshots().
img = csi0.snapshot() # Nimmt ein Bild auf und gibt es zurück.
sim = img.get_similarity("temp/bg.bmp")
change = "- Change -" if sim.min < MIN_TRIGGER_THRESHOLD else "- No Change -"
print(clock.fps(), change, sim)