c++ opencv 模板匹配示例代码
时间: 2023-11-20 14:59:32 浏览: 182
以下是一个使用OpenCV进行模板匹配的C++示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取原始图像和模板图像
Mat img = imread("original.jpg");
Mat templ = imread("template.jpg");
// 创建输出图像
Mat result;
int result_cols = img.cols - templ.cols + 1;
int result_rows = img.rows - templ.rows + 1;
result.create(result_rows, result_cols, CV_32FC1);
// 进行模板匹配
matchTemplate(img, templ, result, TM_CCOEFF_NORMED);
// 获取匹配结果中最大值的位置
Point maxLoc;
minMaxLoc(result, NULL, NULL, NULL, &maxLoc);
// 在原始图像中绘制矩形框
rectangle(img, maxLoc, Point(maxLoc.x + templ.cols, maxLoc.y + templ.rows), Scalar(0, 0, 255), 2);
// 显示结果
imshow("Match result", result);
imshow("Original image", img);
waitKey(0);
return 0;
}
```
该示例代码中,首先读取了原始图像和模板图像,然后创建了一个输出图像,接着使用matchTemplate()函数进行模板匹配,最后获取匹配结果中最大值的位置,并在原始图像中绘制矩形框来标记匹配位置。在这个示例中,我们使用了TM_CCOEFF_NORMED方法进行模板匹配,该方法是一种归一化的相关系数匹配方法。
阅读全文