template_matching.py

# Esta obra está licenciada bajo la licencia MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos los derechos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Ejemplo de coincidencia de plantillas - Correlación cruzada normalizada (NCC)
#
# Este ejemplo muestra cómo usar la función NCC de su OpenMV Cam para hacer coincidir
# parches de imagen con partes de una imagen... salvo en entornos extremadamente controlados,
# NCC no es muy útil.
#
# ADVERTENCIA: ¡El soporte de NCC necesita ser rediseñado! Por ahora, esta función necesita
# mucho trabajo para convertirse en algo útil. Este script se mantendrá para mostrar
# que la funcionalidad existe, pero, en su estado actual, es inadecuada.

import time
import csi
import image
from image import SEARCH_EX

csi0 = csi.CSI()
csi0.reset()
csi0.contrast(1)
csi0.gainceiling(16)
# La resolución máxima para la coincidencia de plantillas con SEARCH_EX es QQVGA
csi0.framesize(csi.QQVGA)
# Puede establecer una ventana (windowing) para reducir la imagen de búsqueda.
# csi0.window(((640-80)//2, (480-60)//2, 80, 60))
csi0.pixformat(csi.GRAYSCALE)

# Cargar plantilla.
# La plantilla debe ser una imagen pequeña en escala de grises (por ejemplo, 32x32 píxeles).
template = image.Image("template.pgm")

clock = time.clock()

# Ejecutar la coincidencia de plantillas
while True:
    clock.tick()
    img = csi0.snapshot()

    # find_template(template, threshold, [roi, step, search])
    # ROI: La tupla de la región de interés (x, y, w, h).
    # Step: El paso del bucle utilizado (y+=step, x+=step); use un paso mayor para hacerlo más rápido.
    # Search puede ser image.SEARCH_EX para búsqueda exhaustiva o image.SEARCH_DS para búsqueda en diamante
    #
    # Nota1: La ROI debe ser más pequeña que la imagen y más grande que la plantilla.
    # Nota2: En la búsqueda en diamante, tanto step como ROI se ignoran.
    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 ""