cv2.findContours用法
时间: 2023-07-18 20:45:20 浏览: 84
`cv2.findContours`是OpenCV中用于在二值图像中查找轮廓的函数。它的基本语法如下:
```
contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
```
其中:
- `image`:输入的二值图像,必须是8位单通道图像(如灰度图像)。
- `mode`:轮廓检索模式,指定轮廓的层次结构关系。常用的模式有`cv2.RETR_EXTERNAL`(只检测外轮廓)、`cv2.RETR_LIST`(检测所有轮廓,并将其存储在列表中)等。
- `method`:轮廓逼近方法,指定轮廓的近似方式。常用的方法有`cv2.CHAIN_APPROX_NONE`(存储所有的轮廓点)、`cv2.CHAIN_APPROX_SIMPLE`(仅存储轮廓的端点)等。
- `contours`:存储轮廓的列表,每个轮廓都是一个包含(x,y)坐标的数组。
- `hierarchy`:轮廓的层次结构关系,用于表示轮廓之间的父子关系和嵌套关系。
- `offset`:轮廓点的可选偏移量,可以用于调整轮廓点的位置。
函数的返回值为轮廓的列表和层次结构关系,可以用于后续的轮廓处理和绘制。例如,可以使用`cv2.drawContours`函数将轮廓绘制在图像上,或者使用`cv2.contourArea`函数计算轮廓面积等。
相关问题
cv2.findContours返回什么
cv2.findContours() 是 OpenCV 中的一个函数,用于在二值图像中查找轮廓信息,它返回三个值,包括轮廓信息、层级信息以及近似轮廓线性信息。
其中,轮廓信息是一个由轮廓点坐标组成的列表,每个轮廓点坐标是一个长度为2的元组,表示该点在图像中的位置。层级信息用于描述轮廓之间的关系,每个轮廓都有一个层级关系,可以表示为一个长度为4的列表 [next, previous, child, parent],其中 next 表示下一个轮廓的索引,previous 表示上一个轮廓的索引,child 表示第一个子轮廓的索引,parent 表示父轮廓的索引。近似轮廓线性信息则是由轮廓点坐标经过抽样后形成的近似多边形轮廓线性信息。
如果您想深入了解 cv2.findContours() 函数及其参数和用法,可以参考 OpenCV 官方文档。
cv2.findContours(masked_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
这行代码是使用 OpenCV 库中的 findContours 函数对二值化图像 masked_image 进行轮廓检测,返回图像中所有轮廓的坐标。其中,第一个参数为输入的二值化图像,第二个参数 cv2.RETR_TREE 表示轮廓的检索模式,这种模式会检索并返回所有轮廓的层级结构信息;第三个参数 cv2.CHAIN_APPROX_NONE 表示轮廓的近似方法,这种方法会存储所有轮廓的所有坐标点。最终返回的结果是一个包含所有轮廓坐标的列表。
阅读全文