cv::findContours();得到子轮廓
时间: 2024-03-07 16:45:00 浏览: 91
cv::findContours() 是 OpenCV 库中的一个函数,用于在二值图像中查找轮廓。它可以帮助我们找到图像中的所有轮廓,并将其存储为一个轮廓向量。
使用 cv::findContours() 函数可以得到子轮廓的步骤如下:
1. 首先,需要创建一个二值图像,可以通过阈值化、边缘检测等方法得到。
2. 然后,创建一个空的轮廓向量,用于存储找到的轮廓。
3. 调用 cv::findContours() 函数,传入二值图像和轮廓向量作为参数。
4. 在函数调用后,轮廓向量将被填充上找到的轮廓信息。
5. 可以通过遍历轮廓向量来访问每个子轮廓的信息。
以下是一个示例代码,展示了如何使用 cv::findContours() 函数来获取子轮廓:
```cpp
cv::Mat binaryImage; // 二值图像
std::vector<std::vector<cv::Point>> contours; // 轮廓向量
// 阈值化或边缘检测等操作得到二值图像
cv::findContours(binaryImage, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
// 遍历轮廓向量,访问每个子轮廓的信息
for (int i = 0; i < contours.size(); i++) {
std::vector<cv::Point> contour = contours[i];
// 处理子轮廓的代码
}
```
相关问题
cv::findContours 获得的轮廓中,如何获取面积最大的轮廓
`cv::findContours` 函数用于从二进制图像中提取轮廓,它是OpenCV库中的一个功能。当你获得轮廓后,通常需要找到其中面积最大的那个。这可以通过遍历所有的轮廓并计算每个轮廓的面积来实现。以下是一个简单的步骤:
1. **提取轮廓**:
```cpp
std::vector<std::vector<cv::Point>> contours;
cv::findContours(image, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
```
2. **计算轮廓面积**:
使用`cv::contourArea`函数,例如:
```cpp
std::vector<cv::Vec4i> hierarchy;
cv::approxPolyDP(contours[i], contourApprox, epsilon, true);
double area = cv::contourArea(contourApprox);
```
`epsilon`是一个阈值,可以用来调整轮廓近似程度。
3. **找出最大面积**:
可能你需要创建一个变量存储当前的最大面积,并遍历所有轮廓来比较它们的面积:
```cpp
double maxArea = 0;
int largestContourIndex = -1;
for (int i = 0; i < contours.size(); i++) {
if (area > maxArea) {
maxArea = area;
largestContourIndex = i;
}
}
```
最后,你可以通过索引来访问面积最大的轮廓:
```cpp
const cv::vector<cv::Point>& maxContour = contours[largestContourIndex];
```
cv::findContours
cv::findContours函数是OpenCV中用于检测物体轮廓的函数。它可以通过简单几个步骤来检测出物体的轮廓,非常方便。该函数有几个参数,其中第四个参数是mode,用于定义轮廓的检索模式。mode的取值有四种:
1. CV_RETR_EXTERNAL:只检测最外围轮廓,忽略内围轮廓。
2. CV_RETR_LIST:检测所有轮廓,包括内围和外围轮廓,但不建立等级关系。
3. CV_RETR_CCOMP:检测所有轮廓,建立两个等级关系,外围为顶层,内围轮廓归属于顶层。
4. CV_RETR_TREE:检测所有轮廓,建立一个等级树结构,外层轮廓包含内层轮廓。
第五个参数是method,用于定义轮廓的近似方法。method的取值有三种:
1. CV_CHAIN_APPROX_NONE:保存物体边界上所有连续的轮廓点。
2. CV_CHAIN_APPROX_SIMPLE:仅保存轮廓的拐点信息,不保存直线段上的点。
3. CV_CHAIN_APPROX_TC89_L1和CV_CHAIN_APPROX_TC89_KCOS:使用teh-Chinl chain近似算法。
阅读全文