template_matching.py

# Эта работа лицензирована по лицензии MIT.
# Copyright (c) 2013-2023 OpenMV LLC. All rights reserved.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Пример сопоставления с шаблоном — нормализованная взаимная корреляция (NCC)
#
# Этот пример демонстрирует, как использовать функцию NCC камеры OpenMV Cam для сопоставления
# фрагментов изображения с частями изображения... за исключением крайне контролируемых условий,
# NCC не особо полезна.
#
# ПРЕДУПРЕЖДЕНИЕ: поддержку NCC необходимо переработать! На данный момент эта функция требует
# большой доработки, чтобы стать действительно полезной. Этот скрипт остаётся, чтобы показать,
# что функциональность существует, но в текущем состоянии она неудовлетворительна.

import time
import csi
import image
from image import SEARCH_EX

csi0 = csi.CSI()
csi0.reset()
csi0.contrast(1)
csi0.gainceiling(16)
# Максимальное разрешение для сопоставления с шаблоном при SEARCH_EX — QQVGA
csi0.framesize(csi.QQVGA)
# Вы можете задать окно (windowing), чтобы уменьшить область поиска изображения.
# csi0.window(((640-80)//2, (480-60)//2, 80, 60))
csi0.pixformat(csi.GRAYSCALE)

# Загрузить шаблон.
# Шаблон должен быть небольшим (например, 32x32 пикселя) изображением в градациях серого.
template = image.Image("template.pgm")

clock = time.clock()

# Выполнить сопоставление с шаблоном
while True:
    clock.tick()
    img = csi0.snapshot()

    # find_template(template, threshold, [roi, step, search])
    # ROI: кортеж области интереса (x, y, w, h).
    # Step: используемый шаг цикла (y+=step, x+=step); используйте больший шаг для увеличения скорости.
    # Search — это либо image.SEARCH_EX для исчерпывающего поиска, либо image.SEARCH_DS для алмазного поиска (diamond search)
    #
    # Примечание 1: ROI должна быть меньше изображения и больше шаблона.
    # Примечание 2: при алмазном поиске (diamond search) параметры step и ROI игнорируются.
    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 ""