opencv中的drawContours
时间: 2023-10-17 07:23:55 浏览: 86
提供轮廓拓扑结信息(hierarchy)且contourIdx的值为-1时函数drawContours()是按怎样的规律绘制轮廓
5星 · 资源好评率100%
在 OpenCV 中,`drawContours`函数是用来在图像上绘制轮廓的。该函数的调用格式如下:
```python
cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)
```
其中,参数含义如下:
- `image`:要绘制轮廓的图像,必须是8位单通道图像;
- `contours`:要绘制的轮廓,是一个列表类型,包含所有轮廓;
- `contourIdx`:需要绘制的轮廓在 `contours` 中的索引,如果为负数,则绘制所有轮廓;
- `color`:轮廓的颜色,可以是一个三元素元组或一个整数值,如 `(255, 0, 0)` 表示蓝色;
- `thickness`:轮廓线条的宽度,如果为负数,则表示填充轮廓内部;
- `lineType`:线条的类型,可以是 `cv2.LINE_4`、`cv2.LINE_8` 或 `cv2.LINE_AA`;
- `hierarchy`:轮廓的层次结构,一般不需要填写;
- `maxLevel`:要绘制的轮廓的最大层次,一般不需要填写;
- `offset`:轮廓的偏移量,一般不需要填写。
示例代码:
```python
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, 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()
```
在这个示例中,我们首先读取一张图片,将其转换为灰度图像,使用阈值处理将其转换为二值图像。然后使用 `findContours` 函数找到所有的轮廓,并使用 `drawContours` 函数将所有轮廓绘制在原图像上。最后展示绘制后的图像。
阅读全文