python cv2.findContours()参数配置
时间: 2023-11-02 09:52:51 浏览: 57
cv2.findContours()函数是用于在二值图像中查找轮廓的函数。它有三个参数:
1. image:输入图像,必须是一个二值图像(黑白图)。
2. mode:轮廓查找模式,有四种模式可选:
- cv2.RETR_EXTERNAL:只检测外轮廓。
- cv2.RETR_LIST:检测所有轮廓,但不建立轮廓层级关系。
- cv2.RETR_CCOMP:检测所有轮廓,并建立两层轮廓结构。
- cv2.RETR_TREE:检测所有轮廓,并建立完整的轮廓层级结构。
3. method:轮廓逼近方法,有三种方法可选:
- cv2.CHAIN_APPROX_NONE:存储所有的轮廓点,适用于绘制轮廓。
- cv2.CHAIN_APPROX_SIMPLE:仅存储水平、垂直、对角线方向的轮廓点,适用于轮廓面积计算等操作。
- cv2.CHAIN_APPROX_TC89_L1 和 cv2.CHAIN_APPROX_TC89_KCOS:使用Teague-Chinliski算法进行轮廓逼近,适用于高精度轮廓。
一般来说,cv2.RETR_EXTERNAL和cv2.CHAIN_APPROX_SIMPLE是最常用的参数配置。例如:
contours, hierarchy = cv2.findContours(threshold_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
其中threshold_image是一个二值图像,contours是找到的轮廓,hierarchy是轮廓之间的关系。
相关问题
python中cv2.findContours
cv2.findContours是OpenCV中的一个函数,用于查找二值图像中的轮廓。该函数可以接收三个参数:二值图像、轮廓查找模式和轮廓近似方法。函数返回两个值:轮廓和层次结构。
在使用cv2.findContours函数时,需要注意以下几点:
- 输入图像必须是二值图像,即像素值只能是0或255。
- 轮廓查找模式可以是RETR_EXTERNAL(只检测外部轮廓)、RETR_LIST(检测所有轮廓,但不建立轮廓间的父子关系)等。
- 轮廓近似方法可以是CHAIN_APPROX_NONE(存储所有的轮廓点)、CHAIN_APPROX_SIMPLE(仅存储轮廓的端点)等。
下面是一个简单的示例,演示如何使用cv2.findContours函数查找二值图像中的轮廓:
```python
import cv2
img = cv2.imread('binary_image.jpg', 0)
ret, thresh = cv2.threshold(img, 127, 255, 0)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在该示例中,我们首先读取一张二值图像,然后使用cv2.threshold函数将其二值化。接着使用cv2.findContours函数查找轮廓,最后使用cv2.drawContours函数绘制轮廓。
python opencv cv2.findContours
cv2.findContours是OpenCV中的一个函数,用于查找图像中的轮廓。它的输入参数包括二值图像、轮廓检索模式和轮廓逼近方法。在你提供的引用中,有几个版本的代码和示例,用于展示如何使用cv2.findContours函数来查找轮廓并进行处理。
在引用中的示例代码中,首先将图像读入并转换为灰度图像,然后进行阈值处理以得到二值图像。接下来,使用cv2.findContours函数查找轮廓,并返回轮廓列表和轮廓的层次结构。然后,遍历所有的轮廓,并根据需要进行处理,如计算轮廓的周长、绘制边界框等。最后,将处理后的图像保存并显示出来。
引用中的示例代码与引用类似,但在调用cv2.findContours函数时指定了轮廓检索模式和轮廓逼近方法的参数。