opencv——轮廓发现与轮廓(二值图像)分析
2021/5/22 10:30:24
本文主要是介绍opencv——轮廓发现与轮廓(二值图像)分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
引言
二值图像分析最常见的一个主要方式就是轮廓发现与轮廓分析,其中轮廓发现的目的是为轮廓分析做准备,经过轮廓分析我们可以得到轮廓各种有用的属性信息。
这里顺带提下边缘检测,和轮廓提取的区别:
边缘检测主要是通过一些手段检测数字图像中明暗变化剧烈(即梯度变化比较大)像素点,偏向于图像中像素点的变化。如canny边缘检测,结果通常保存在和源图片一样尺寸和类型的边缘图中。
轮廓检测指检测图像中的对象边界,更偏向于关注上层语义对象。如OpenCV中的findContours()函数, 它会得到每一个轮廓并以点向量方式存储,除此也得到一个图像的拓扑信息,即一个轮廓的后一个轮廓、前一个轮廓、父轮廓和内嵌轮廓的索引编号。
一,轮廓的发现与绘制
在OpenCV里面利用findContours()函数和drawContours()函数实现这一功能。
- findContours()函数
void findContours( InputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = Point() )
参数一: image,输入图像、八位单通道的,背景为黑色的二值图像。(一般是经过Canny、拉普拉斯等边缘检测算子处理过的二值图像)
参数二:contours,输出轮廓图像。是一个向量,向量的每个元素都是一个轮廓。因此,这个向量的每个元素仍是一个向量。即:
vector<vector<Point> > contours;
参数三:hierarchy,输出各个轮廓的继承关系。hierarchy也是一个向量,长度和contours相等,每个元素和contours的元素对应。hierarchy的每个元素是一个包含四个整型数的向量。即:
vector<Vec4i> hierarchy;
参数四:mode,检测轮廓的方法。有四种方法:
- RETR_EXTERNAL:只检测外轮廓。忽略轮廓内部的洞。
- RETR_LIST:检测所有轮廓,但不建立继承(包含)关系。
- RETR_TREE:检测所有轮廓,并且建立所有的继承(包含)关系。
- RETR_CCOMP:检测所有轮廓,但是仅仅建立两层包含关系。
参数五:method,每个轮廓的编码信息。也有四种(常用前两种)
- CHAIN_APPROX_NONE:把轮廓上所有的点存储。
- CHAIN_APPROX_SIMPLE:只存储轮廓上的拐点。
- CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法
参数六: Point,偏移量。默认为0
注意:该函数将白色区域当作前景物体。所以findContours()函数是黑色背景下找白色轮廓。(重要!!!)
- drawContours()函数
drawContours( InputOutputArray binImg, // 输出图像 OutputArrayOfArrays contours,// 全部发现的轮廓对象 Int contourIdx// 轮廓索引号,-1表示绘制所有轮廓 const Scalar & color,// 绘制时候颜色 int thickness,// 绘制线宽,-1表示填充轮廓内部 int lineType,// 线的类型LINE_8 InputArray hierarchy,// 拓扑结构图 int maxlevel,// 最大层数, 0只绘制当前的,1表示绘制绘制当前及其内嵌的轮廓 Point offset = Point()// 轮廓位移,可选 )
二,轮廓分析(二值图像分析)
在得到图像的轮廓以后,我们就可以进行轮廓分析。经过轮廓分析我们可以得到轮廓各种有用的属性信息、常见的如下:
这篇关于opencv——轮廓发现与轮廓(二值图像)分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19EntBot.ai: AI Website Chatbot for Product Guides and Development Doc
- 2024-06-17zero-shot-learning-definition-examples-comparison
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris