cv2.findContours参数及返回值
时间: 2023-11-02 14:40:35 浏览: 40
cv2.findContours() 函数是用于在二值图像中查找轮廓的函数。
函数参数:
- `image`:输入的二值图像,即只有黑白两种颜色的图像。
- `mode`:表示轮廓检索模式,有以下几种模式可选:
- `cv2.RETR_EXTERNAL`:表示只检测外轮廓。
- `cv2.RETR_LIST`:表示检测所有轮廓,并将其保存到列表中。
- `cv2.RETR_CCOMP`:表示检测所有轮廓,并将其组织为两级层次结构。
- `cv2.RETR_TREE`:表示检测所有轮廓,并将其组织为树形结构。
- `method`:表示轮廓近似方法,有以下几种方法可选:
- `cv2.CHAIN_APPROX_NONE`:表示存储所有的轮廓点,不进行压缩。
- `cv2.CHAIN_APPROX_SIMPLE`:表示只保留轮廓的拐点处的坐标值,压缩轮廓,节省内存。
- `contours`:表示检测到的轮廓,每个轮廓都是一个由点组成的 Numpy 数组。
- `hierarchy`:表示轮廓的层级结构,具体内容可以参考 OpenCV 官方文档。
函数返回值:
- 如果使用了 `cv2.RETR_LIST` 模式,则返回检测到的所有轮廓。
- 如果使用了 `cv2.RETR_EXTERNAL` 模式,则只返回最外层轮廓。
- 如果使用了 `cv2.RETR_CCOMP` 或 `cv2.RETR_TREE` 模式,则返回所有轮廓及其层级结构信息。
相关问题
cv2.findContours参数以及返回值详解
好的,您的问题是关于cv2.findContours函数的参数和返回值的详解。cv2.findContours函数是用于在二值图像中查找轮廓的函数,其主要参数包括输入图像、轮廓检索模式、轮廓近似方法等。其中,输入图像是指要查找轮廓的二值图像,轮廓检索模式用于指定查找轮廓的级别,轮廓近似方法用于指定找到轮廓的精度。
cv2.findContours函数的返回值包括包含所有轮廓的列表以及轮廓和层次结构的元组。列表中的每个元素都是一个包含有关单个轮廓的坐标信息的数组。元组中的第一个元素是轮廓,第二个元素是关于轮廓层次结构的信息。
希望这回答能够帮助您。
cv2.findContours输入参数与返回值
cv2.findContours是OpenCV中用于查找图像轮廓的函数。它的输入参数是二值化图像,输出是轮廓信息和层次结构。
具体来说,cv2.findContours函数的输入参数包括:
- image:输入的二值化图像,要求为8位单通道图像。
- mode:轮廓检索模式,有四种可选模式,分别为cv2.RETR_EXTERNAL、cv2.RETR_LIST、cv2.RETR_CCOMP和cv2.RETR_TREE。
- method:轮廓逼近方法,有三种可选方法,分别为cv2.CHAIN_APPROX_NONE、cv2.CHAIN_APPROX_SIMPLE和cv2.CHAIN_APPROX_TC89_L1。
- contours:检测到的轮廓信息,是一个Python列表,每个元素都是一个轮廓,每个轮廓由若干个点组成。
- hierarchy:轮廓的层次结构信息,也是一个Python列表,每个元素都是一个四元组(hierarchy[i], hierarchy[i][1], hierarchy[i], hierarchy[i]),其中hierarchy[i]、hierarchy[i]、hierarchy[i]和hierarchy[i]分别表示第i个轮廓的后一个轮廓、前一个轮廓、子轮廓和父轮廓的索引。
下面是一个示例代码:
```
import cv2
# 读入图像并转换为灰度图像
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化图像
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 0, 255), 2)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```