写c++ opencv画出最小外接矩形
时间: 2023-07-05 07:10:51 浏览: 144
好的,以下是用C++和OpenCV库画出最小外接矩形的代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(){
// 读取图片
Mat image = imread("test.jpg");
// 转为灰度图
Mat gray;
cvtColor(image, gray, COLOR_BGR2GRAY);
// 二值化处理
Mat binary;
threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);
// 查找轮廓
vector<vector<Point>> contours;
findContours(binary, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 画出轮廓
Mat result = image.clone();
drawContours(result, contours, -1, Scalar(0, 0, 255), 2);
// 画出最小外接矩形
for (size_t i = 0; i < contours.size(); i++){
RotatedRect rect = minAreaRect(contours[i]);
Point2f points[4];
rect.points(points);
for (int j = 0; j < 4; j++){
line(result, points[j], points[(j + 1) % 4], Scalar(0, 255, 0), 2);
}
}
// 显示结果
imshow("Result", result);
waitKey(0);
return 0;
}
```
上述代码中,首先读取一张测试图片,然后将其转换为灰度图,并进行二值化处理。接着使用findContours函数查找轮廓,然后使用drawContours函数画出轮廓。最后使用minAreaRect函数求出最小外接矩形,并使用line函数画出最小外接矩形的四条边。最终将结果显示在一个窗口中。
阅读全文