cv2.findContours返回的值
时间: 2024-07-31 19:00:47 浏览: 182
`cv2.findContours()` 函数在OpenCV中用于从二进制图像中查找轮廓(contours),它是图像分析的一部分,常用于形状检测、物体分割等应用。这个函数通常会返回三个值:
1. **contours**: 这是一个二维数组,其中包含了所有找到的轮廓的信息。每个轮廓都是一个列表,包含一系列点,这些点构成轮廓边缘的顺序。
2. **hierarchy**: 这个值是一个嵌套的四元组数组,描述了轮廓之间的层次结构关系。它表示的是哪些轮廓属于同一个更大的区域(例如,一个物体内部的部分轮廓)。每个元素包含四个整数,分别表示“parent”,“next”,“previous”和“first child”。
3. **image**: 如果传递给`findContours`的是一个三通道彩色图像,那么第三个返回值将是处理后的单通道图像,通常是一个掩码,表示原图中每个像素是否属于某个轮廓。
相关问题
cv2.findContours
cv2.findContours 是 OpenCV 中的一个函数,用于在二值图像中查找轮廓。它可以找到图像中所有的轮廓,并返回每个轮廓的点集。该函数的语法为:
```
contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
```
其中,参数 image 是输入的二值图像,mode 是轮廓检索模式,method 是轮廓逼近方法,contours 是返回的轮廓点集,hierarchy 是轮廓的层级信息,offset 是轮廓点集的偏移量。该函数的返回值是轮廓点集和层级信息。
cv2.findcontours
cv2.findContours 是 OpenCV 中用于查找图像中轮廓的函数。它接受原始图像、轮廓查找模式和轮廓逼近方法作为输入,并返回图像中所有轮廓的列表。在查找轮廓之前,通常需要对输入图像进行二值化处理,以便只保留感兴趣的目标区域。
例如,可以使用以下代码查找一张图像中的所有轮廓:
```
import cv2
# 读取图像
img = cv2.imread('image.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, 255, 0), 3)
# 显示结果
cv2.imshow('Contours', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们首先读取一张图像,将其转换为灰度图像,然后对其进行二值化处理。接下来,使用 cv2.findContours 函数查找轮廓,其中轮廓查找模式为 cv2.RETR_TREE,轮廓逼近方法为 cv2.CHAIN_APPROX_SIMPLE。最后,我们使用 cv2.drawContours 函数在原始图像上绘制所有轮廓,并将结果显示出来。
阅读全文