[C++] opencv - drawContours(绘制轮廓)函数介绍和使用场景
创始人
2024-11-10 13:10:11
0

drawContours函数介绍

OpenCV中的drawContours函数用于在图像上绘制轮廓。其函数原型如下:

比较复制插入新建

void drawContours(InputOutputArray image, InputOutputArray contours, InputOutputArray contourIdx,  int contourColor, Scalar thickness=Scalar(), int lineType=LINE_8,  InputArray hierarchy = noArray(), int maxLevel = INT_MAX, Point offset = Point() ); 

参数说明:

  • image:输出图像,即绘制轮廓后的图像。
  • contours:轮廓集合,每个轮廓由一系列点组成。
  • contourIdx:轮廓索引数组,指定要绘制哪些轮廓。如果为NULL,则绘制所有轮廓。
  • contourColor:轮廓颜色,使用Scalar类型表示。
  • thickness:轮廓线宽,默认值为1。
  • lineType:轮廓线类型,默认值为LINE_8。
  • hierarchy:轮廓层次结构,用于绘制轮廓的父子关系。默认值为noArray()。只有在你想要绘制部分轮廓(参见maxLevel)时,才需要使用这个参数。
  • maxLevel:表示绘制轮廓的最大层级。如果maxLevel为0,则只绘制指定的轮廓;如果maxLevel为1,则绘制轮廓及其所有嵌套轮廓;如果maxLevel为2,则绘制轮廓、所有嵌套轮廓、所有嵌套到嵌套的轮廓等。需要注意的是,当存在层次结构时,这个参数才会被考虑。
  • offset:轮廓点的偏移量,默认值为(0,0)。

使用场景

OpenCV的drawContours函数可以应用于以下场景:

  1. 图像分割:在二值化或灰度图像中,通过绘制轮廓来将图像分割成不同的区域。

  2. 目标检测和识别:在实时视频流或图像中检测和识别特定目标,如人脸、车辆、行人等。

  3. 医学影像分析:在医学影像中查找和分析病变区域,如肿瘤、炎症等。

  4. 文字识别:对印刷体文字图像进行轮廓提取和分析,以便进行后续的文字识别和处理。

  5. 三维重建:在三维重建中,通过检测物体表面的轮廓来确定物体的位置和形状。

使用案例

#include  #include   using namespace cv; using namespace std;  int main() {     // 读取灰度图像     Mat src = imread("./3480e7ce_mk_tk_a_c2_6400_4480.png", IMREAD_GRAYSCALE);     if (src.empty())     {         cout << "无法读取图像" << endl;         return -1;     }     imshow("原图", src);     waitKey(0);     // 二值化图像     Mat binary;     threshold(src, binary, 128, 255, THRESH_BINARY);     imshow("二值化图", binary);     waitKey(0);      // 查找轮廓     vector> contours;     vector hierarchy;     findContours(binary, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);      // 绘制轮廓     Mat result(src.size(), CV_8UC3, Scalar(0, 0, 0));     for (size_t i = 0; i < contours.size(); i++)     {         // 蓝色颜色         Scalar color(255,0,0);          // 只绘制第一层的轮廓         drawContours(result, contours, static_cast(i), color, 2, LINE_8, hierarchy, 0);     }      // 显示结果     imshow("轮廓图", result);     waitKey(0);      return 0; } 

运行效果:

二值化图像:

 轮廓图:

总结

drawContours函数是OpenCV库中用于绘制轮廓的一个非常实用的函数。它可以方便地将轮廓信息可视化出来,帮助我们更好地理解图像中的目标信息。在实际应用中,我们可以根据需要选择不同的参数来绘制不同样式的轮廓,从而实现更加灵活的应用效果。

相关内容

热门资讯

2分钟辅助!新荣耀房卡辅助,竟... 2分钟辅助!新荣耀房卡辅助,竟然是有辅助插件(有挂功能)暗藏猫腻,小编详细说明新荣耀房卡辅助破解器有...
七分钟辅助!随意玩辅助器视频,... 七分钟辅助!随意玩辅助器视频,确实是有辅助插件(有挂解密)1、下载好随意玩辅助器视频正确养号方法之后...
第2分钟辅助!新西游辅助,真是... 第2分钟辅助!新西游辅助,真是真的是有辅助挂(有挂总结)1、新西游辅助辅助软件下载优化,新西游辅助底...
一分钟辅助!情怀娱乐辅助器,确... 一分钟辅助!情怀娱乐辅助器,确实是有辅助教程(有挂教学)1)情怀娱乐辅助器辅助插件:进一步探索情怀娱...
第六分钟辅助!云南捞腌菜辅助,... 第六分钟辅助!云南捞腌菜辅助,本来存在有辅助工具(有挂攻略)暗藏猫腻,小编详细说明云南捞腌菜辅助破解...
第二分钟辅助!四川游戏家园万能... 第二分钟辅助!四川游戏家园万能辅助工具,确实是真的有辅助工具(确实有挂)1、很好的工具软件,可以解锁...
复盘辅助挂!hhpoker辅助... 复盘辅助挂!hhpoker辅助器,wepoker辅助器怎么弄,指南教程(有挂细节)1)wepoker...
一分钟辅助!川南九九辅助,果然... 一分钟辅助!川南九九辅助,果然是有辅助插件(真实有挂)1、下载好川南九九辅助透视辅助下载之后点击打开...
插件辅助挂!sohoo开挂辅助... 插件辅助挂!sohoo开挂辅助,wpk系统是否存在作弊行为,办法教程(有挂方针);1、金币登录送、破...
三分钟辅助!丽水都莱辅助,一贯... 三分钟辅助!丽水都莱辅助,一贯是有辅助攻略(有挂细节)1、许多玩家不知道丽水都莱辅助辅助怎么退出观战...