C++ opencv 模板匹配 缩放
时间: 2023-06-28 13:05:06 浏览: 123
在 OpenCV 中进行模板匹配时,可以通过缩放图像和模板来提高匹配的准确度。
首先,使用 cv::resize 函数对图像和模板进行缩放。例如,将图像和模板缩小一半:
```cpp
cv::Mat src = cv::imread("image.jpg");
cv::Mat templ = cv::imread("template.jpg");
cv::Mat src_small, templ_small;
cv::resize(src, src_small, cv::Size(), 0.5, 0.5);
cv::resize(templ, templ_small, cv::Size(), 0.5, 0.5);
```
然后,使用缩放后的图像和模板进行模板匹配:
```cpp
cv::Mat result;
cv::matchTemplate(src_small, templ_small, result, cv::TM_CCOEFF_NORMED);
double minVal, maxVal;
cv::Point minLoc, maxLoc;
cv::minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc);
cv::Rect roi(maxLoc, templ_small.size());
cv::rectangle(src_small, roi, cv::Scalar(0, 0, 255), 2);
cv::imshow("result", result);
cv::imshow("src_small", src_small);
cv::waitKey();
```
注意,在绘制匹配结果时,需要将匹配位置的坐标乘以缩放比例,才能在原始图像上正确显示匹配位置。
阅读全文