template_matching.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 Template Matching - Correlazione Incrociata Normalizzata (NCC)
#
# Questo esempio mostra come utilizzare la funzione NCC della OpenMV Cam per confrontare
# porzioni di immagine con parti di un'immagine... salvo che per ambienti estremamente controllati
# NCC non è poi così utile.
#
# ATTENZIONE: il supporto NCC deve essere rivisto! Al momento questa funzione necessita
# di molto lavoro per diventare qualcosa di utile. Questo script rimarrà per mostrare
# che la funzionalità esiste, ma, nel suo stato attuale, è inadeguata.

import time
import csi
import image
from image import SEARCH_EX

csi0 = csi.CSI()
csi0.reset()
csi0.contrast(1)
csi0.gainceiling(16)
# La risoluzione massima per il template matching con SEARCH_EX è QQVGA
csi0.framesize(csi.QQVGA)
# È possibile impostare il windowing per ridurre l'immagine di ricerca.
# csi0.window(((640-80)//2, (480-60)//2, 80, 60))
csi0.pixformat(csi.GRAYSCALE)

# Carica il template.
# Il template dovrebbe essere una piccola immagine in scala di grigi (ad es. 32x32 pixel).
template = image.Image("template.pgm")

clock = time.clock()

# Esegui il template matching
while True:
    clock.tick()
    img = csi0.snapshot()

    # find_template(template, threshold, [roi, step, search])
    # ROI: la tupla della regione di interesse (x, y, w, h).
    # Step: il passo del ciclo utilizzato (y+=step, x+=step); usare un passo maggiore per renderlo più veloce.
    # Search è image.SEARCH_EX per la ricerca esaustiva oppure image.SEARCH_DS per la ricerca a diamante
    #
    # Nota1: la ROI deve essere più piccola dell'immagine e più grande del template.
    # Nota2: nella ricerca a diamante, sia step che ROI vengono ignorati.
    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 ""