drawcontours()函数解析
时间: 2023-07-17 18:07:55 浏览: 84
`drawContours()`函数是OpenCV中的一个函数,用于在图像上绘制轮廓。该函数的定义如下:
```python
cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)
```
其中,参数含义如下:
- `image`:要绘制轮廓的图像,必须为8位无符号图像。
- `contours`:表示轮廓的列表。每个轮廓都是一个包含边界点的numpy数组。
- `contourIdx`:要绘制的轮廓的索引。当设置为-1时,绘制所有轮廓。
- `color`:绘制轮廓的颜色。
- `thickness`:轮廓线的粗细。默认值为1。
- `lineType`:轮廓线的类型。默认为`cv2.LINE_8`。
- `hierarchy`:轮廓的层次结构信息。默认为`None`。
- `maxLevel`:要绘制的轮廓的最大层次结构级别。默认为`None`。
- `offset`:轮廓偏移量。默认为`(0,0)`。
`drawContours()`函数可以用于在图像上绘制单个轮廓或多个轮廓。如果要绘制多个轮廓,需要将所有的轮廓放在一个列表中,然后将该列表作为`contours`参数传递给函数。如果要绘制所有轮廓,可以将`contourIdx`参数设置为-1。
例如,下面的代码演示了如何使用`drawContours()`函数在图像上绘制轮廓:
```python
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, 255, 0), 2)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先将图像转换为灰度图像,然后对其进行二值化处理,接着使用`cv2.findContours()`函数获取轮廓。最后,我们使用`cv2.drawContours()`函数在图像上绘制轮廓,并将结果显示出来。
注意,`drawContours()`函数并不会修改传递给它的图像,而是返回一个绘制了轮廓的新图像。如果要修改原始图像,请将结果赋值给原始图像。
阅读全文