c++版opencv如何求取图像中白色区域的最小外接矩形
时间: 2023-10-17 11:05:13 浏览: 130
要求取图像中白色区域的最小外接矩形,可以使用OpenCV库中的函数 `cv::findContours` 和 `cv::minAreaRect`。
具体步骤如下:
1.首先,将图像转换为灰度图像,并进行二值化处理。
```c++
cv::Mat gray_img, binary_img;
cv::cvtColor(src_img, gray_img, cv::COLOR_BGR2GRAY);
cv::threshold(gray_img, binary_img, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);
```
2.使用 `cv::findContours` 函数查找二值化后的图像中的轮廓。
```c++
std::vector<std::vector<cv::Point>> contours;
cv::findContours(binary_img, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
```
3.遍历所有轮廓,使用 `cv::minAreaRect` 函数求取最小外接矩形。
```c++
for (size_t i = 0; i < contours.size(); i++)
{
cv::RotatedRect min_rect = cv::minAreaRect(contours[i]);
// 对于每个最小外接矩形,可以获取其中心点坐标、长宽和旋转角度等信息
cv::Point2f center = min_rect.center;
float width = min_rect.size.width;
float height = min_rect.size.height;
float angle = min_rect.angle;
}
```
注意,在使用 `cv::minAreaRect` 函数求取最小外接矩形时,返回的是一个旋转矩形(`cv::RotatedRect` 类型),其可以描述矩形中心点坐标、长宽和旋转角度等信息。
阅读全文