vector<vector<Point>>contours;//轮廓数组findContours(frame, contours, hierarchy , RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point(0, 0));//寻找图片中所有出现的轮廓contours.size()这个是什么意思
时间: 2023-06-14 11:06:25 浏览: 106
`contours` 是一个包含所有轮廓的数组,每个轮廓是一个包含一系列 `Point` 点的向量(vector)。`findContours()` 函数用来寻找一幅图像中所有出现的轮廓,函数的第一个参数是输入图像,第二个参数是轮廓数组,第三个参数是轮廓的层次结构,第四个参数是轮廓的查找模式,第五个参数是轮廓的近似方法,第六个参数是偏移量。`contours.size()` 表示轮廓数组中轮廓的数量。
相关问题
contours, hierarchy = cv2.findContours(frame,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
在OpenCV中,`contours, hierarchy = cv2.findContours(frame, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)` 这一行代码用于查找图像中的轮廓(Contour)。下面是各个参数的解释:
- `frame`:这是一个二维图像,通常是经过预处理的输入图像,例如灰度化、二值化等。
- `cv2.RETR_EXTERNAL`:这是检索模式,指示函数只返回外部轮廓(不包括孔洞内部的轮廓),也就是最大的连通区域。
- `cv2.CHAIN_APPROX_SIMPLE`:这是轮廓逼近方法,表示结果仅包含轮廓的顶点和端点信息,不保存轮廓之间的连接线,这可以减少存储空间并加速后续计算。
`contours` 变量是一个列表,包含了图像中的所有外层轮廓,每个轮廓都是一个Mx2的numpy数组,表示轮廓的边界点坐标。
`hierarchy` 则是一个结构体,记录了轮廓之间的嵌套关系,如果有的话。这对于分析复杂的图像形状和组件很有帮助。
findContours(thresh, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);的阈值该怎么使用
`findContours()`函数是用来从二值图像中找到轮廓的。其中,`thresh`参数是二值化后的图像,`contours`是用来存储轮廓点的容器,`hierarchy`是用来存储轮廓之间关系的容器,`RETR_EXTERNAL`表示只检测外轮廓,`CHAIN_APPROX_SIMPLE`表示只保留轮廓的端点,以减少存储空间。
在`findContours()`函数中,还有一个可选的参数`threshold`,用来设置轮廓的阈值。该阈值决定了将哪些像素点视为轮廓点,不同的阈值会导致不同的轮廓结果。阈值的选择取决于应用场景和二值化的效果,一般需要进行实验和调参才能确定合适的阈值。
需要注意的是,`findContours()`函数会改变输入的二值图像,因此在调用函数前需要对该图像进行备份,避免对原始图像造成影响。
阅读全文