cv2.findContours两个返回值
时间: 2023-11-16 19:56:55 浏览: 143
cv2.findContours()函数返回两个值,一个是轮廓本身,即图像中的每个轮廓,用numpy中的ndarray表示;另一个是每条轮廓对应的属性hierarchy,即每个轮廓的层级关系。其中,轮廓本身是一个list,list中每个元素都是图像中的一个轮廓。在使用drawContours函数时,需要注意这个概念。如果只需要轮廓本身,可以只取返回值的第一个元素即可。
相关问题
cv.findContours各参数及返回值的含义
`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`类型的轮廓链接信息,描述了轮廓之间的嵌套关系。
cv2.findContours()函数的返回值有什么
cv2.findContours()函数是OpenCV中用于查找图像中轮廓的函数。它的返回值是一个包含轮廓信息的列表。具体来说,cv2.findContours()函数的返回值包括两个元素:轮廓列表和层次结构。
1. 轮廓列表:返回的第一个元素是一个包含所有轮廓的列表。每个轮廓都是一个由点组成的数组,表示图像中的一个闭合曲线。可以通过遍历这个列表来访问每个轮廓。
2. 层次结构:返回的第二个元素是一个层次结构数组,用于描述轮廓之间的关系。层次结构数组中的每个元素都包含四个值:下一个轮廓、前一个轮廓、第一个子轮廓和父轮廓。这些值可以用于确定轮廓之间的嵌套关系和顺序。
阅读全文