技术专栏
findContours()函数与drawContours()函数 —— opencv学习记录(五)
opencv中利用函数 findContours() 可以监测出物体的轮廓
drawContours() 可以画出物体的轮廓
1. findContours()函数源码
void findContours(InputArray image, OutputArrayOfArrays contours,OutputArray hierarchy, int mode,int method, Point offset = Point());image ,8位单通道图像。 非零像素被视为1。 零像素保持为0,因此图像被视为二值。可以使用compare、inRange、threshold、adaptiveThreshold、Canny和其他方法来从灰度或彩色图像创建二值图像。contours 监测到的轮廓 原型 vector<vector<Point>> contours; 每个轮廓线存储为一个点的向量hierarchy 可选输出向量 原型vector<Vec4i> hierarchy;model 定义轮廓的检索模式 RETR_EXTERNAL 只监测最外围轮廓RETR_LIST 检测所有轮廓method 定义轮廓的近似方法 CHAIN_APPROX_NONE 保存物体所有连续的轮廓点到contours向量内CHAIN_APPROX_SIMPLE 仅保存轮廓的拐点信息 拐点与拐点直接的信息不保留point 偏移量
2. drawContours()函数源码
void 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());imgae 目标图像contours 所有的输入轮廓。 每条轮廓线存储为一个点向量。contouridx要绘制的轮廓参数。 如果它是负的,就画出所有的等高线。color 颜色thickness 宽度 如果是负数 表示填充轮廓内部lineType 线型hierarchy可选信息。 它只在你想绘制一些轮廓时才需要(参见maxLevel)。maxlevel 绘制轮廓的最大水平。 如果为0,则只绘制指定的轮廓。如果为1,函数绘制轮廓线和所有嵌套轮廓线。如果是2,该函数绘制等值线、所有嵌套等值线、所有嵌套到嵌套等值线,等等。只有当存在可用的层次结构时,才会考虑此参数。offset 可选轮廓偏移参数。 将所有绘制的等高线按指定偏移量(dx, dy)移动。
3 代码
int main(){Mat image, img2;img2 = imread("2_3.jpg", 0);GaussianBlur(img2, image, Size(3, 3), 0);//高斯Canny(image, image, 100, 250);//二值化vector<vector<Point>> contours;vector<Vec4i> hierarchy;//3.利用函数findContours()查找图像A的轮廓;findContours(image, contours, hierarchy, RETR_LIST, CHAIN_APPROX_NONE, Point());Mat imageContours = Mat::zeros(image.size(), CV_8UC1);Mat Contours = Mat::zeros(image.size(), CV_8UC1); //绘制for (int i = 0; i < contours.size(); i++){//contours[i]代表的是第i个轮廓,contours[i].size()代表的是第i个轮廓上所有的像素点数for (int j = 0; j < contours[i].size(); j++){//绘制出contours向量内所有的像素点Point P = Point(contours[i][j].x, contours[i][j].y);Contours.at<uchar>(P) = 255;//白色像素点}}//绘制轮廓drawContours(imageContours, contours, -1, Scalar(255));imshow("Contours Image", imageContours); //轮廓imshow("Point of Contours", Contours); //向量contours内保存的所有轮廓点waitKey(0);}
4 method 参数对比
4.1 CHAIN_APPROX_NONE 保存物体所有连续的轮廓点到contours向量内

4.2 CHAIN_APPROX_SIMPLE 仅保存轮廓的拐点信息 拐点与拐点直接的信息不保留
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
点赞
收藏
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据相关专栏
-
浏览量:2059次2023-10-13 17:19:32
-
浏览量:4863次2020-09-07 14:06:47
-
浏览量:4715次2020-09-07 13:50:25
-
浏览量:3512次2020-10-28 16:15:45
-
浏览量:8192次2020-12-06 16:44:26
-
浏览量:2489次2023-04-18 09:14:22
-
浏览量:3550次2024-03-04 14:48:01
-
浏览量:10591次2021-06-21 11:49:58
-
浏览量:2485次2023-07-14 14:36:03
-
浏览量:1407次2023-07-17 13:48:57
-
浏览量:2309次2023-12-06 14:42:44
-
浏览量:13727次2020-12-01 19:16:14
-
2021-02-20 13:45:09
-
浏览量:2006次2023-07-17 13:57:30
-
浏览量:1726次2023-07-14 14:16:32
-
浏览量:2490次2023-07-05 10:11:08
-
浏览量:1796次2023-07-05 10:11:29
-
浏览量:1893次2023-07-05 11:03:52
-
浏览量:2732次2020-06-24 15:44:51
切换马甲
上一页
下一页
打赏用户
共 0 位
我要创作
分享技术经验,可获取创作收益
分类专栏
-
29篇
热门专栏
- 20D添加标准SPI驱动详解 ——(三)
- 海思OSD开发系列(一) SDL_TTF框架移植
- 关于海思芯片上GPIO的操作
- onnx模型转engine并进行推理全过程解析
- 系统性学习海思,哪位大牛整理一份学习清单呢?
- 海思Hi3519V101开发核心板 4k@30fps H.265音视频编码Hi3519RFCV101芯片
- 对稀有飞机数据集进行多属性物体检测:使用YOLOv5的实验过程
- [python opencv 计算机视觉零基础到实战] 十五 直方图反向投影
- [python opencv 计算机视觉零基础到实战] 二、 opencv文件格式与摄像头读取
- 图像腐蚀和膨 胀-- opencv学习记录(二)
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
mini菜
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注

微信扫码分享
QQ好友