opencv模版匹配源码解析 博客
时间: 2023-07-14 22:03:08 浏览: 216
opencv双目视觉stereo算法实现源代码
4星 · 用户满意度95%
OpenCV模版匹配是一种在图像中寻找给定模板的技术。该技术在多个领域中都有应用,如数字图像处理、计算机视觉等。
在OpenCV中,模版匹配的函数为`matchTemplate()`。其主要步骤如下:
1. 首先,我们需要加载原始图像和待匹配的模板图像。
2. 然后,使用模版图像和原始图像进行匹配。这一步骤中,我们可以选择多种匹配方法,如平方差匹配、相关性匹配和归一化相关性匹配。
3. 匹配后,我们可以使用`minMaxLoc()`函数找到匹配结果的最小值和最大值。
4. 最后,我们可以绘制矩形框来标记匹配的位置。
下面是一份简单的OpenCV模版匹配的源码示例:
```cpp
#include <opencv2/opencv.hpp>
int main()
{
// 加载原始图像和模版图像
cv::Mat img = cv::imread("original.png", cv::IMREAD_COLOR);
cv::Mat templ = cv::imread("template.png", cv::IMREAD_COLOR);
// 进行模版匹配
cv::Mat result;
cv::matchTemplate(img, templ, result, cv::TM_CCOEFF_NORMED);
// 寻找匹配结果中的最小值和最大值
double minVal, maxVal;
cv::Point minLoc, maxLoc;
cv::minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc);
// 绘制矩形框来标记匹配的位置
cv::rectangle(img, maxLoc, cv::Point(maxLoc.x + templ.cols, maxLoc.y + templ.rows), cv::Scalar(0, 255, 0), 2);
// 显示结果图像
cv::imshow("Matched Image", img);
cv::waitKey(0);
return 0;
}
```
上述代码展示了一个简单的OpenCV模版匹配的流程。通过加载原始图像和模版图像,并使用`matchTemplate()`函数进行匹配,然后使用`minMaxLoc()`函数找到匹配结果的最大值位置,最后使用`rectangle()`函数绘制矩形框标记匹配位置。
阅读全文