cv提取轮廓外接矩形
时间: 2024-09-09 11:09:20 浏览: 34
在 OpenCV 中,提取轮廓外接矩形通常涉及以下几个步骤:
1. **读取和处理图像**:首先,你需要加载图片并将其转换为二进制图像,以便可以使用 `cv.findContours()` 函数来检测轮廓。
2. **查找轮廓**:使用 `cv.findContours()` 函数,传入图像、检索模式(如 `RETR_EXTERNAL`)和近似方法(如 `CHAIN_APPROX_SIMPLE`),得到轮廓集合。
3. **遍历轮廓**:对于每一个轮廓,可以使用轮廓的数据结构(例如 `std::vector<cv::contour<Point>>` 的元素)访问其顶点。
4. **计算外接矩形**:每个轮廓都有一个 `boundingRect()` 或 `minAreaRect()` 方法,它们可以分别返回最小包围矩形和最小面积旋转矩形。选择 `boundingRect()` 更简单,它直接返回一个 `cv::Rect` 对象,该对象包含了轮廓的左上角坐标和尺寸(宽和高)。
```cpp
cv::Rect boundingBox = cv::boundingRect(contour);
```
`boundingBox` 可以通过 `.x`, `.y`, `.width`, 和 `.height` 属性访问矩形的位置和大小。
5. **绘制矩形**:最后,你可以将外接矩形画在原始图像上,帮助理解每个轮廓的范围。
示例代码:
```cpp
for (const auto& contour : contours) {
cv::Rect boundingRect = cv::boundingRect(contour);
cv::rectangle(image, boundingRect, Scalar(0, 0, 255), 2); // 红色边界框
}
```
阅读全文