# Template Matching Example - Normalized Cross Correlation (NCC)
#
# This example shows off how to use the NCC feature of your OpenMV Cam to match
# image patches to parts of an image... expect for extremely controlled environments
# NCC is not all to useful.
#
# WARNING: NCC supports needs to be reworked! As of right now this feature needs
# a lot of work to be made into somethin useful. This script will remain to show
# that the functionality exists, but, in its current state is inadequate.
import time
import sensor
import image
from image import SEARCH_EX
# from image import SEARCH_DS
# Reset sensor
sensor.reset()#摄像头重置
# Set sensor settings
sensor.set_contrast(1)#设置对比度
sensor.set_gainceiling(16)#自动增益
# Max resolution for template matching with SEARCH_EX is QQVGA
sensor.set_framesize(sensor.QQVGA)#分辨率大小,最大支持QQVGA
# You can set windowing to reduce the search image.
# sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60))
sensor.set_pixformat(sensor.GRAYSCALE)#灰度
# Load template.
# Template should be a small (eg. 32x32 pixels) grayscale image.
#template1 = image.Image("/1.pgm")#模板图片pgm格式
template2 = image.Image("/2.pgm")#模板图片pgm格式
template3 = image.Image("/3.pgm")#模板图片pgm格式
clock = time.clock()
# Run template matching
while True:
clock.tick()
img = sensor.snapshot()
# find_template(template, threshold, [roi, step, search])
# ROI: The region of interest tuple (x, y, w, h).
# Step: The loop step used (y+=step, x+=step) use a bigger step to make it faster.
# Search is either image.SEARCH_EX for exhaustive search or image.SEARCH_DS for diamond search
#
# Note1: ROI has to be smaller than the image and bigger than the template.
# Note2: In diamond search, step and ROI are both ignored.
"""
r1 = img.find_template(#调用模板匹配函数![1_1722223662403_8f4de3c4653a29c6a9df40b2281ef50.jpg](https://fcdn.singtown.com/92922a81-8e2d-4111-ae6e-6fefb02ad501.jpg) ![0_1722223662402_288e461d9390ea8d52ccbd8164ab3e0.jpg](https://fcdn.singtown.com/e7a5c6e7-7e3c-40eb-9e85-f0e2ec517e66.jpg)
template1, 0.70, step=4, search=SEARCH_EX
) # , roi=(10, 0, 60, 60))#template图片,0.7匹配阈值,roi设置了是在规定区域寻找图像,不设置了默认整个区域寻找
if r1:#如果找到模板图片
img.draw_rectangle(r1,color=(0,0,0))
"""
r2 = img.find_template(#调用模板匹配函数
template2, 0.70, step=4, search=SEARCH_EX
) # , roi=(10, 0, 60, 60))#template图片,0.7匹配阈值,roi设置了是在规定区域寻找图像,不设置了默认整个区域寻找
if r2:#如果找到模板图片
img.draw_rectangle(r2,color=(255,0,0))
r3 = img.find_template(#调用模板匹配函数
template3, 0.70, step=4, search=SEARCH_EX
) # , roi=(10, 0, 60, 60))#template图片,0.7匹配阈值,roi设置了是在规定区域寻找图像,不设置了默认整个区域寻找
if r3:#如果找到模板图片
img.draw_rectangle(r3,color=(0,0,0))
print(clock.fps())