模板与OpenCV和Python中的多个源图像匹配 [英] Template matching with multiple source images in OpenCV and Python

查看:70
本文介绍了模板与OpenCV和Python中的多个源图像匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是Python和OpenCV中使用模板匹配进行图像检测的代码

The following is the code in Python and OpenCV for image detection using template matching

import numpy as np
import cv2

image = cv2.imread('photo.jpg')

template = cv2.imread('template.jpg')

# resize images
image = cv2.resize(image, (0,0), fx=0.5, fy=0.5) 
template = cv2.resize(template, (0,0), fx=0.5, fy=0.5) 

# Convert to grayscale
imageGray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
templateGray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)

# Find template
result = cv2.matchTemplate(imageGray,templateGray, cv2.TM_CCOEFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
h,w = templateGray.shape
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(image,top_left, bottom_right,(0,0,255),4)

# Show result
cv2.imshow("Template", template)
cv2.imshow("Result", image)

cv2.moveWindow("Template", 10, 50);
cv2.moveWindow("Result", 150, 50);

cv2.waitKey(0)

我想知道如何对多个源图像执行该程序?

I want to know how to do the program with multiple source images?

推荐答案

假设您的意思是多个模板图像,这是我尝试过的.

Assuming that you mean multiple template images, here is something I tried.

import cv2
import numpy as np
import glob

#empty list to store template images
template_data=[]
#make a list of all template images from a directory
files1= glob.glob('your\\template images\\template*.png')

for myfile in files1:
    image = cv2.imread(myfile,0)
    template_data.append(image)

test_image=cv2.imread('you\\testimage\\testimage.png')
test_image= cv2.cvtColor(test_image, cv2.COLOR_BGR2GRAY)

#loop for matching
for tmp in template_data:
    (tH, tW) = tmp.shape[:2]
    cv2.imshow("Template", tmp)
    cv2.waitKey(1000)
    cv2.destroyAllWindows()
    result = cv2.matchTemplate(test_image, tmp, cv2.TM_CCOEFF)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
    top_left = max_loc
    bottom_right = (top_left[0] + tW, top_left[1] + tH)
    cv2.rectangle(test_image,top_left, bottom_right,255, 2)

cv2.imshow('Result',test_image)
cv2.waitKey(0)

这篇关于模板与OpenCV和Python中的多个源图像匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆