template_matching.py

# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemple de mise en correspondance de modèles (Template Matching) - Corrélation croisée normalisée (NCC)
#
# Cet exemple montre comment utiliser la fonctionnalité NCC de votre OpenMV Cam pour faire correspondre
# des fragments d'image à des parties d'une image... attendez-vous à ce que, hors environnements extrêmement contrôlés,
# NCC ne soit pas très utile.
#
# AVERTISSEMENT : le support de NCC doit être retravaillé ! À l'heure actuelle, cette fonctionnalité nécessite
# beaucoup de travail pour devenir réellement utile. Ce script reste présent pour montrer
# que la fonctionnalité existe, mais que, dans son état actuel, elle est inadéquate.

import time
import csi
import image
from image import SEARCH_EX

csi0 = csi.CSI()
csi0.reset()
csi0.contrast(1)
csi0.gainceiling(16)
# La résolution maximale pour la mise en correspondance de modèles avec SEARCH_EX est QQVGA
csi0.framesize(csi.QQVGA)
# Vous pouvez définir un fenêtrage pour réduire l'image de recherche.
# csi0.window(((640-80)//2, (480-60)//2, 80, 60))
csi0.pixformat(csi.GRAYSCALE)

# Charge le modèle (template).
# Le modèle doit être une petite image en niveaux de gris (par exemple 32x32 pixels).
template = image.Image("template.pgm")

clock = time.clock()

# Exécute la mise en correspondance de modèles
while True:
    clock.tick()
    img = csi0.snapshot()

    # find_template(template, threshold, [roi, step, search])
    # ROI : le tuple de la région d'intérêt (x, y, w, h).
    # Step : le pas de boucle utilisé (y+=step, x+=step) ; utilisez un pas plus grand pour accélérer le traitement.
    # Search vaut soit image.SEARCH_EX pour une recherche exhaustive, soit image.SEARCH_DS pour une recherche en losange (diamond search)
    #
    # Remarque 1 : la ROI doit être plus petite que l'image et plus grande que le modèle.
    # Remarque 2 : dans la recherche en losange, step et ROI sont tous deux ignorés.
    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 ""