opencv drawcontours函数
时间: 2023-04-28 13:02:19 浏览: 93
OpenCV中的drawContours函数是用来绘制轮廓的函数。它可以在图像上绘制指定轮廓的边界线。该函数需要传入三个参数:绘制轮廓的图像、轮廓的点集、轮廓的索引。可以通过设置参数来控制绘制的线条颜色、粗细等属性。该函数可以用于图像分割、形状识别等领域。
相关问题
opencv drawContours函数
OpenCV的drawContours函数用于在图像上绘制轮廓。
函数原型:
```cpp
void cv::drawContours(
InputOutputArray image, // 输出图像
InputArrayOfArrays contours, // 轮廓数组
int contourIdx, // 轮廓索引
const Scalar & color, // 轮廓颜色
int thickness = 1, // 轮廓线条宽度
int lineType = LINE_8, // 轮廓线条类型
InputArray hierarchy = noArray(), // 轮廓层次结构
int maxLevel = INT_MAX, // 最大层级深度
Point offset = Point() // 轮廓偏移量
)
```
参数说明:
- image:输入/输出图像,必须是8位单通道或三通道图像。
- contours:包含所有轮廓的数组,每个轮廓由点的数组表示。
- contourIdx:需要绘制的轮廓的索引,-1表示绘制所有轮廓。
- color:轮廓颜色,如果是三通道图像,则需要使用Scalar(r,g,b)格式。
- thickness:轮廓线条宽度,如果为负值,则表示填充轮廓内部。
- lineType:轮廓线条类型,有LINE_4、LINE_8、LINE_AA可选。
- hierarchy:轮廓层次结构,可选参数,默认值为noArray()。
- maxLevel:最大层级深度,可选参数,默认值为INT_MAX。
- offset:轮廓偏移量,可选参数,默认值为Point()。
示例:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat src = imread("test.png");
Mat gray, binary;
cvtColor(src, gray, COLOR_BGR2GRAY);
threshold(gray, binary, 0, 255, THRESH_BINARY_INV | THRESH_OTSU);
std::vector<std::vector<Point>> contours;
findContours(binary, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
Mat dst = Mat::zeros(src.size(), CV_8UC3);
for (size_t i = 0; i < contours.size(); i++)
{
drawContours(dst, contours, i, Scalar(0, 0, 255), 2);
}
imshow("src", src);
imshow("dst", dst);
waitKey();
return 0;
}
```
原图与绘制的轮廓如下所示:
![drawContours](https://img-blog.csdn.net/20180519223224420?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZXJ0eV9zdmNfMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
OpenCV drawContours
OpenCV中的`drawContours`函数可以在图像上绘制轮廓。该函数的语法如下:
```python
cv.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)
```
其中,各个参数的含义如下:
- `image`:要绘制轮廓的图像。
- `contours`:轮廓列表,每个轮廓是一个Numpy数组。
- `contourIdx`:要绘制的轮廓的索引。如果为负数,则绘制所有轮廓。
- `color`:绘制轮廓的颜色(BGR)。
- `thickness`:轮廓线的粗细。如果为负数或者`cv.FILLED`,则填充轮廓内部。
- `lineType`:绘制轮廓线的类型。
- `hierarchy`:轮廓的层次结构,可选参数。
- `maxLevel`:绘制的轮廓的最大级别,可选参数。
- `offset`:绘制轮廓时的偏移量,可选参数。
例如,下面的代码片段将在图像上绘制所有轮廓,颜色为红色,线宽为3:
```python
import cv2 as cv
img = cv.imread('image.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
_, contours, _ = cv.findContours(gray, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
cv.drawContours(img, contours, -1, (0, 0, 255), 3)
cv.imshow('Contours', img)
cv.waitKey(0)
```
阅读全文