cv.findContours各参数及返回值的含义
时间: 2024-09-09 13:09:06 浏览: 57
`cv.findContours()` 是 OpenCV(计算机视觉库)中的一个函数,用于从二进制图像中查找轮廓。这个函数的原型通常是这样的:
```cpp
std::vector<std::vector<cv::Point>> findContours(const Mat& image, RETR_mode mode, CHAIN_APPROX_SIMPLE method, Mat* hierarchy = nullptr)
```
参数含义:
1. `image` (Mat):输入的二进制图像,通常是一个掩码或者阈值化的灰度图像,其中白色区域代表轮廓。
2. `mode` (RETR_mode):轮廓检索模式,指定如何跟踪轮廓。常见有:
- RETR_EXTERNAL:只寻找外部轮廓。
- RETR_LIST:生成轮廓列表,每个轮廓独立于其他轮廓。
- RETR_CCOMP:找到所有相连组件的轮廓,包括内部孔洞。
- RETR_TREE:生成树形层次结构,可以获取轮廓间的上下文关系。
3. `method` (CHAIN_APPROX_METHOD):轮廓近似算法,影响结果精度和内存消耗。常用方法有:
- CHAIN_APPROX_NONE:保留所有的像素点,适合显示。
- CHAIN_APPROX_SIMPLE:压缩垂直线段,减少存储空间。
4. `hierarchy` (Mat*):可选输出参数,用于存储轮廓之间的连接信息。如果未指定,将不会被创建。
返回值:
`findContours()` 返回两个值:一个是`std::vector<std::vector<cv::Point>>`类型的向量,包含了所有检测到的轮廓,每个轮廓是一个包含顶点坐标的点集合;另一个值如果是非空指针,并且`mode`为`RETR_TREE`,则是`Mat`类型的轮廓链接信息,描述了轮廓之间的嵌套关系。
阅读全文