cv2.findContours(),cv2.drawContours()用法
时间: 2023-10-14 14:08:39 浏览: 77
047_輪廓(findContours、drawContours) _ 阿洲的程式教學1
`cv2.findContours()` 函数用于在二进制图像中查找轮廓。该函数接受三个参数:输入图像、轮廓检索模式和轮廓近似方法。它返回一个包含轮廓的列表和一个包含层次结构的元组。
下面是一个示例代码:
```python
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, 0, 255), 3)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
`cv2.drawContours()` 函数用于在图像上绘制轮廓。该函数接受五个参数:输入图像、轮廓列表、轮廓索引(-1 表示绘制所有轮廓)、颜色和线条宽度。
下面是一个示例代码:
```python
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, 0, 255), 3)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先读取一张图像,将其转换为灰度图像,并对其进行二值化。然后,我们使用 `cv2.findContours()` 函数查找轮廓,并使用 `cv2.drawContours()` 函数在图像上绘制轮廓。最后,我们显示绘制好的图像。
阅读全文