cv::drawContours
时间: 2024-01-11 15:03:53 浏览: 112
cv::drawContours函数是OpenCV中用于绘制轮廓的函数。它可以将通过cv::findContours函数找到的轮廓绘制到图像上。该函数的语法如下:
```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:输入输出图像,即要绘制轮廓的图像。
- contours:输入的轮廓,可以是单个轮廓或者轮廓的集合。
- contourIdx:要绘制的轮廓的索引,如果为负值,则绘制所有的轮廓。
- color:绘制轮廓的颜色。
- thickness:轮廓线的粗细,默认为1。
- lineType:轮廓线的类型,默认为LINE_8。
- hierarchy:轮廓的层次结构,可选参数,默认为空。
- maxLevel:绘制轮廓的最大层级,默认为INT_MAX。
- offset:轮廓的偏移量,默认为(0,0)。
以下是一个使用cv::drawContours函数绘制轮廓的示例代码:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读取图像
Mat image = imread("image.jpg");
// 将图像转为灰度图像
Mat gray;
cvtColor(image, gray, COLOR_BGR2GRAY);
// 二值化处理
Mat binary;
threshold(gray, binary, 128, 255, THRESH_BINARY);
// 查找轮廓
std::vector<std::vector<Point>> contours;
findContours(binary, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 绘制轮廓
drawContours(image, contours, -1, Scalar(0, 0, 255), 2);
// 显示结果
imshow("Contours", image);
waitKey(0);
return 0;
}
```
这段代码首先读取一张图像,然后将其转为灰度图像,并进行二值化处理。接着使用cv::findContours函数查找图像中的轮廓,并将轮廓绘制到原始图像上。最后显示结果图像。
阅读全文