C++ OPENCV 模板匹配
时间: 2024-01-05 22:20:01 浏览: 159
OpenCV实现图像模板匹配(C++实现).zip
模板匹配是一种在图像中寻找与给定模板图像匹配的小块区域的方法。在C++ OpenCV中,可以使用`cv::matchTemplate`函数来实现模板匹配。
下面是一个演示模板匹配的例子:
```cpp
#include <opencv2/opencv.hpp>
int main() {
// 读取图像和模板图像
cv::Mat image = cv::imread("image.jpg");
cv::Mat templateImage = cv::imread("template.jpg");
// 创建存储匹配结果的矩阵
cv::Mat result(image.cols - templateImage.cols + 1, image.rows - templateImage.rows + 1, CV_32FC1);
// 进行模板匹配
cv::matchTemplate(image, templateImage, result, cv::TM_CCOEFF_NORMED);
// 寻找最佳匹配位置
double minVal, maxVal;
cv::Point minLoc, maxLoc;
cv::minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc);
// 绘制矩形框标记匹配位置
cv::rectangle(image, maxLoc, cv::Point(maxLoc.x + templateImage.cols, maxLoc.y + templateImage.rows), cv::Scalar(0, 255, 0), 2);
// 显示结果图像
cv::imshow("Result", image);
cv::waitKey(0);
return 0;
}
```
在上述代码中,首先读取了待匹配的图像和模板图像。然后,创建了一个矩阵来存储匹配结果。接下来,使用`cv::matchTemplate`函数进行模板匹配,并将结果存储在`result`矩阵中。然后,使用`cv::minMaxLoc`函数找到最佳匹配位置,并使用`cv::rectangle`函数在原图像上绘制矩形框来标记匹配位置。最后,显示结果图像。
阅读全文