cv2.matchTemplate用法c++示例
时间: 2024-05-07 14:18:24 浏览: 134
`cv2.matchTemplate()` 是 OpenCV 库中用于在图像中寻找模板的函数。它可以根据给定的模板,在待匹配的图像中寻找匹配项,并返回匹配结果的位置。下面是一个简单的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 加载待匹配图像和模板
Mat img = imread("image.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_CCORR_NORMED);
// 找到最佳匹配位置
double minVal, maxVal;
Point minLoc, maxLoc;
minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, Mat());
// 绘制匹配结果矩形框
rectangle(img, maxLoc, Point(maxLoc.x + templ.cols, maxLoc.y + templ.rows), Scalar(0, 255, 0), 2);
// 显示结果
imshow("Result", img);
waitKey(0);
return 0;
}
```
在这个示例中,我们首先加载了待匹配的图像和模板。然后,我们创建了一个大小为 (result_rows, result_cols) 的矩阵来存储匹配结果。接下来,我们调用 `matchTemplate()` 函数进行模板匹配,并将结果存储在 `result` 矩阵中。在找到最佳匹配位置后,我们使用 `rectangle()` 函数在原始图像中绘制一个矩形框来标记匹配结果。最后,我们显示结果并等待用户按下任意键退出程序。
阅读全文