template_matching.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
#
# Template-Matching-Beispiel - Normalisierte Kreuzkorrelation (NCC)
#
# Dieses Beispiel zeigt, wie man die NCC-Funktion der OpenMV Cam verwendet, um
# Bildausschnitte mit Teilen eines Bildes abzugleichen ... außer in extrem kontrollierten Umgebungen
# ist NCC nicht sonderlich nützlich.
#
# WARNUNG: Die NCC-Unterstützung muss überarbeitet werden! Im aktuellen Zustand benötigt diese Funktion
# noch viel Arbeit, um wirklich nützlich zu werden. Dieses Skript bleibt bestehen, um zu zeigen,
# dass die Funktionalität vorhanden ist, in ihrem aktuellen Zustand aber unzureichend ist.

import time
import csi
import image
from image import SEARCH_EX

csi0 = csi.CSI()
csi0.reset()
csi0.contrast(1)
csi0.gainceiling(16)
# Die maximale Auflösung für Template-Matching mit SEARCH_EX ist QQVGA
csi0.framesize(csi.QQVGA)
# Sie können ein Fenster (Windowing) festlegen, um das Suchbild zu verkleinern.
# csi0.window(((640-80)//2, (480-60)//2, 80, 60))
csi0.pixformat(csi.GRAYSCALE)

# Vorlage laden.
# Die Vorlage sollte ein kleines Graustufenbild sein (z. B. 32x32 Pixel).
template = image.Image("template.pgm")

clock = time.clock()

# Template-Matching ausführen
while True:
    clock.tick()
    img = csi0.snapshot()

    # find_template(template, threshold, [roi, step, search])
    # ROI: Das Region-of-Interest-Tupel (x, y, w, h).
    # Step: Die verwendete Schrittweite der Schleife (y+=step, x+=step); eine größere Schrittweite macht es schneller.
    # Search ist entweder image.SEARCH_EX für eine erschöpfende Suche oder image.SEARCH_DS für eine Diamantsuche
    #
    # Hinweis 1: Die ROI muss kleiner als das Bild und größer als die Vorlage sein.
    # Hinweis 2: Bei der Diamantsuche werden sowohl step als auch ROI ignoriert.
    r = img.find_template(
        template, 0.70, step=4, search=SEARCH_EX
    )  # , roi=(10, 0, 60, 60))
    if r:
        img.draw_rectangle(r)

    print(clock.fps())

results matching ""

    No results matching ""