template_matching.py

# Este trabalho está licenciado sob a licença MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos os direitos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemplo de Correspondência de Templates - Correlação Cruzada Normalizada (NCC)
#
# Este exemplo mostra como usar o recurso NCC da sua OpenMV Cam para comparar
# trechos de imagem com partes de uma imagem... exceto em ambientes extremamente controlados,
# o NCC não é muito útil.
#
# AVISO: o suporte a NCC precisa ser refeito! No momento, este recurso precisa
# de muito trabalho para se tornar algo útil. Este script permanece para mostrar
# que a funcionalidade existe, mas, no estado atual, é inadequada.

import time
import csi
import image
from image import SEARCH_EX

csi0 = csi.CSI()
csi0.reset()
csi0.contrast(1)
csi0.gainceiling(16)
# A resolução máxima para correspondência de templates com SEARCH_EX é QQVGA
csi0.framesize(csi.QQVGA)
# Você pode definir uma janela (windowing) para reduzir a imagem de busca.
# csi0.window(((640-80)//2, (480-60)//2, 80, 60))
csi0.pixformat(csi.GRAYSCALE)

# Carrega o template.
# O template deve ser uma imagem pequena em escala de cinza (ex.: 32x32 pixels).
template = image.Image("template.pgm")

clock = time.clock()

# Executa a correspondência de templates
while True:
    clock.tick()
    img = csi0.snapshot()

    # find_template(template, threshold, [roi, step, search])
    # ROI: a tupla da região de interesse (x, y, w, h).
    # Step: o passo do loop usado (y+=step, x+=step); use um passo maior para deixar mais rápido.
    # Search pode ser image.SEARCH_EX para busca exaustiva ou image.SEARCH_DS para busca em diamante
    #
    # Nota1: a ROI precisa ser menor que a imagem e maior que o template.
    # Nota2: na busca em diamante, step e ROI são ambos ignorados.
    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 ""