利用contours_match_i1写一个图片识别代码(使用cpp语言)
时间: 2023-05-23 12:05:07 浏览: 136
A:
首先需要安装OpenCV库,然后可以按照以下步骤编写代码:
1. 引入OpenCV库和标准命名空间
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
```
2. 加载需要匹配的模板图和待匹配的原图
```cpp
Mat img = imread("original_image.jpg");
Mat temp = imread("template_image.jpg");
```
3. 定义模板图的宽高和匹配方法(此处使用 TM_CCOEFF_NORMED)
```cpp
int width = temp.cols;
int height = temp.rows;
int method = TM_CCOEFF_NORMED;
```
4. 创建结果矩阵
```cpp
Mat result;
```
5. 进行模板匹配
```cpp
matchTemplate(img, temp, result, method);
```
6. 创建匹配位置矩阵
```cpp
Mat location;
```
7. 通过匹配结果找到最匹配的位置
```cpp
minMaxLoc(result, 0, 0, 0, &location);
```
8. 绘制匹配矩形
```cpp
rectangle(img, location, Point(location.x + width, location.y + height), Scalar(0, 0, 255), 2);
```
9. 显示结果图
```cpp
imshow("Result", img);
waitKey(0);
```
完整代码示例:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 加载图片
Mat img = imread("original_image.jpg");
Mat temp = imread("template_image.jpg");
// 计算模板宽度和高度
int width = temp.cols;
int height = temp.rows;
// 定义匹配方法
int method = TM_CCOEFF_NORMED;
// 创建结果矩阵
Mat result;
// 进行模板匹配
matchTemplate(img, temp, result, method);
// 创建匹配位置矩阵
Mat location;
// 通过匹配结果找到最匹配的位置
minMaxLoc(result, 0, 0, 0, &location);
// 绘制匹配矩形
rectangle(img, location, Point(location.x + width, location.y + height), Scalar(0, 0, 255), 2);
// 显示结果图
imshow("Result", img);
waitKey(0);
return 0;
}
```
阅读全文