模板匹配通常被用于目标检测、相似度分析中,opencv2和opencv3中提供了一个专门用于模板匹配的函数——cv::matchTemplate(),下面就对该函数进行详细的介绍。
先从一个实际的例子入手,如下分别是一幅测试图片和一个右眼的模板图片(这里为了方便,是直接从原图上切下来的),通过模板匹配的方法找到测试图片眼睛的位置。
测试代码如下:
#include <opencv2/opencv.hpp>
int main()
{
//加载源图像和模板图像
cv::Mat image_source = cv::imread("lena.jpg", cv::IMREAD_GRAYSCALE);
cv::Mat image_template = cv::imread("template.jpg", cv::IMREAD_GRAYSCALE);
cv::Mat image_matched;
//模板匹配
cv::matchTemplate(image_source, image_template, image_matched, cv::TM_CCOEFF_NORMED);
double minVal, maxVal;
cv::Point minLoc, maxLoc;
//寻找最佳匹配位置
cv::minMaxLoc(image_matched, &minVal