findContours c++ 用法
时间: 2024-11-04 17:08:25 浏览: 12
`findContours` 是 OpenCV(开源计算机视觉库)中的一个函数,用于从二值图像中检测轮廓(边缘及其连接)。在 C++ 中,你可以按照以下步骤使用它:
1. **包含头文件**:
```cpp
#include <opencv2/imgproc.hpp>
```
2. **读取图像**:
```cpp
cv::Mat image = cv::imread("image_path.jpg", cv::IMREAD_GRAYSCALE); // 读灰度图像
```
3. **转换为二值图像** (如果需要):
```cpp
cv::threshold(image, image, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU); // 使用阈值分割
```
4. **查找轮廓**:
```cpp
std::vector<std::vector<cv::Point>> contours;
cv::findContours(image, contours, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE);
```
- `cv::RETR_TREE`: 获取轮廓的树形结构。
- `cv::CHAIN_APPROX_SIMPLE`: 进行轮廓简化,只保留顶点和转折点。
5. **处理轮廓**:
对每个轮廓,可以获取其矩形边界、面积等信息,或者对它们进行进一步操作。
```cpp
for(const auto& contour : contours)
{
cv::Rect boundingRect = cv::boundingRect(contour);
int contourArea = cv::contourArea(contour);
// 打印或画出轮廓
cv::drawContours(image, {contour}, 0, Scalar(0, 0, 255), 2);
}
```
阅读全文