vector<vector<Point>>contours;//轮廓数组findContours(frame, contours, hierarchy , RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point(0, 0));//寻找图片中所有出现的轮廓contours.size()这个是什么意思
时间: 2023-06-14 21:06:25 浏览: 66
`contours` 是一个包含所有轮廓的数组,每个轮廓是一个包含一系列 `Point` 点的向量(vector)。`findContours()` 函数用来寻找一幅图像中所有出现的轮廓,函数的第一个参数是输入图像,第二个参数是轮廓数组,第三个参数是轮廓的层次结构,第四个参数是轮廓的查找模式,第五个参数是轮廓的近似方法,第六个参数是偏移量。`contours.size()` 表示轮廓数组中轮廓的数量。
相关问题
findContours(thresh, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);的阈值该怎么使用
`findContours()`函数是用来从二值图像中找到轮廓的。其中,`thresh`参数是二值化后的图像,`contours`是用来存储轮廓点的容器,`hierarchy`是用来存储轮廓之间关系的容器,`RETR_EXTERNAL`表示只检测外轮廓,`CHAIN_APPROX_SIMPLE`表示只保留轮廓的端点,以减少存储空间。
在`findContours()`函数中,还有一个可选的参数`threshold`,用来设置轮廓的阈值。该阈值决定了将哪些像素点视为轮廓点,不同的阈值会导致不同的轮廓结果。阈值的选择取决于应用场景和二值化的效果,一般需要进行实验和调参才能确定合适的阈值。
需要注意的是,`findContours()`函数会改变输入的二值图像,因此在调用函数前需要对该图像进行备份,避免对原始图像造成影响。
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
这段代码使用OpenCV库中的函数`cv2.findContours()`来查找给定二值掩模图像中的轮廓(contours)。函数接收三个参数:
1. 二值掩模图像(mask):只包含前景(白色)和背景(黑色)两种颜色的图像。
2. 轮廓检索模式(RETR_EXTERNAL):指定了轮廓检索模式,该参数用于指定获取轮廓的方式。`cv2.RETR_EXTERNAL`表示只检索外部轮廓。
3. 轮廓近似方法(CHAIN_APPROX_SIMPLE):指定了轮廓近似方法,该参数用于指定轮廓的精度。`cv2.CHAIN_APPROX_SIMPLE`表示压缩水平、垂直和对角线方向上的冗余点,只保留轮廓的端点。
函数返回两个值:轮廓列表(contours)和层次结构(hierarchy)。其中,轮廓列表是包含所有轮廓的列表,每个轮廓是一个由点组成的Numpy数组。层次结构是一个包含轮廓层次信息的Numpy数组,可以用于分析轮廓之间的关系。