OPENCV3 C++ 模板匹配
时间: 2023-09-12 22:09:24 浏览: 144
您好!对于OpenCV 3中的C++模板匹配,您可以使用`matchTemplate`函数来实现。这个函数可以在给定的图像中寻找与模板最相似的区域。
下面是一个简单的示例代码,展示了如何使用模板匹配:
```cpp
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR);
cv::Mat templateImage = cv::imread("template.jpg", cv::IMREAD_COLOR);
if (image.empty() || templateImage.empty())
{
std::cout << "Failed to load image(s)." << std::endl;
return -1;
}
cv::Mat result;
int matchMethod = cv::TM_CCOEFF_NORMED;
// 进行模板匹配
cv::matchTemplate(image, templateImage, result, matchMethod);
// 寻找最佳匹配位置
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;
}
```
在这个示例中,我们首先加载了原始图像和模板图像。然后,我们使用`matchTemplate`函数对原始图像进行模板匹配。接下来,我们使用`minMaxLoc`函数找到匹配结果中最大值的位置。最后,我们在原始图像上绘制一个矩形框来标记找到的匹配位置,并显示结果。
请确保在编译和运行代码之前,将`image.jpg`和`template.jpg`替换为实际的图像文件路径。
希望这个示例能够帮到您!如果您有任何进一步的问题,请随时提问。
阅读全文