opencv找到轮廓后得到的若干结果,用方框框出面积最大的一个,用C++实现
时间: 2023-06-16 07:04:08 浏览: 79
以下是使用 OpenCV 和 C++ 实现的将面积最大的轮廓用方框框出来的代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main() {
// 读取图像
Mat img = imread("test.jpg");
// 转换为灰度图像
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
// 二值化
Mat binary;
threshold(gray, binary, 100, 255, THRESH_BINARY);
// 查找轮廓
vector<vector<Point>> contours;
findContours(binary, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 找到面积最大的轮廓
double max_area = 0;
int max_idx = -1;
for (int i = 0; i < contours.size(); i++) {
double area = contourArea(contours[i]);
if (area > max_area) {
max_area = area;
max_idx = i;
}
}
// 用矩形框出面积最大的轮廓
if (max_idx != -1) {
Rect rect = boundingRect(contours[max_idx]);
rectangle(img, rect, Scalar(0, 0, 255), 2);
}
// 显示结果
imshow("Result", img);
waitKey(0);
return 0;
}
```
注:以上代码中使用的测试图片为名为 `test.jpg` 的图片文件,需要将代码中的图片路径改为实际图片路径。
阅读全文