OPenCV版本:4.4

IDE:VS2017

功能描述

简述:使用一个指定的核元素去膨胀一个图像,图像膨胀的过程类似于一个卷积的过程,源图像矩阵A以及结构元素B,B在A矩阵上依次移动,每个位置上B所覆盖元素的最大值替换B的中心位置值(即锚点处),完成整个膨胀的过程。

注意:所谓的腐蚀与膨胀的对象是针对图像中的白色元素所说的。看成是图像中的物体话会理解反。

算法通俗理解:膨胀算法使图像扩大一圈,给图像中的对象边界添加像素,其运算过程就是用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结构图像的该像素为0,否则为1。结果就是使二值图像扩大一圈。

函数使用一个指定的核元素去膨胀源图像,内核有一个可定义的 锚点,我们叫他内核中心点,膨胀操作时,获取内核覆盖区域最大像素值,并代替锚点的像素,最大值通过以下公式获取:
dst(x,y)=max⁡(x′,y′):element(x′,y′)≠0src(x+x′,y+y′)\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y') dst(x,y)=(x′,y′):element(x′,y′)​=0max​src(x+x′,y+y′)
函数支持就地模式,膨胀操作可以迭加使用多次,在多通道图像的情况下,每个通道独立处理。

函数原型:

CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel,Point anchor = Point(-1,-1), int iterations = 1,int borderType = BORDER_CONSTANT,const Scalar& borderValue = morphologyDefaultBorderValue() );

参数描述

  • 参数 src 输入图像;通道的数量可以是任意的,但是深度值应该是以下之一:
    CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.

  • 参数 dst 和源图像同样大小和类型的输出图像。

  • 参数 kernel 膨胀核元素,如果elemenat=Mat(), 是一个3 x 3的矩形核元素,核可以使用getStructuringElement来创建。

  • 参数 anchor 元素中的锚点的位置,默认是值(-1,-1),也就是说锚点在元素的中心位置。

  • 参数 iterations 膨胀的迭代次数。

  • 参数 borderType 像素外推方法。参见#BorderTypes, BORDER_WRAP不支持。

  • 参数 borderValue 固定边缘的情况下的边缘值。

    参考: erode, morphologyEx, getStructuringElement

源码示例:

#include <iostream>
#include <opencv2/opencv.hpp>int main()
{cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\juice.png");if (image.empty()){std::cout << "image read failed!" << std::endl;cv::waitKey(0);return 0;}cv::Mat imageDst;//自定义核cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(8, 8));cv::imshow("原图", image);cv::dilate(image, imageDst, element);cv::imshow("膨胀", imageDst);cv::waitKey(0);
}

运行结果:

背景(白色)膨胀,而果汁杯子的图像及水果的图像缩小了。

OPenCV膨胀函数dilate()的使用相关推荐

  1. OpenCV——膨胀与腐蚀

    膨胀与腐蚀的主要功能: 1.消除噪声: 2.分割出独立像素,在图像中连接相邻元素: 3.寻找图像中明显的极大值区域和极小值区域: 4.求图像梯度: 膨胀是求局部最大值的操作: 膨胀和腐蚀操作都是将图像 ...

  2. 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐蚀和膨胀操作

    图像形态学中两种最基本的操作就是对图形的腐蚀和膨胀,可以说,形态学中的中高级操作都是建立在这两种操作之上.通过这两种基本的运算可以去除图像中的噪声,分割出独立的区域或者将两个区域连接在一起. 关于图像 ...

  3. opencv形态学运算:腐蚀(erode)和膨胀(dilate)

    形态学操作就是基于形状的一系列图像处理操作.OpenCV为进行图像的形态学变换提供了快捷.方便的函数.最基本的形态学操作有二种,他们是:膨胀与腐蚀(Dilation与Erosion). 膨胀与腐蚀能实 ...

  4. OpenCV 常用函数汇总(normalize、getStructuringElement、erode、dilate)

    简单认知 Mat 认知 取值类型和范围 CV_8U 8位无符号整数 0~255 CV_8S 8位符号整数 -128~127 CV_16U 16位无符号整数 0~65535 CV_16S 16位符号整数 ...

  5. 图像的形态学开操作(开运算)和闭操作(闭运算)的概念和作用,并用OpenCV的函数morphologyEx()实现对图像的开闭操作

    大家看这篇博文前可以先看一看下面这篇博文,下面这篇博文是这篇博文的基础: 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐 ...

  6. Python x OpenCV+Numpy 函数参考列表

    (1)图像的读取操作 cv2.imread(文件名,标记) 功能:给定文件名和读入方式,读入一幅图像 返回值:numpy数组,类型为ndarray的2维或3维数组 文件名:图像全名,包括后缀名 标记: ...

  7. C++ opencv Erode and Dilate

    Erode and Dilate 图像的像素值越大的地方,图像越亮,而腐蚀和膨胀就是求图像像素局部最小值和局部最大值的过程 膨胀(dilate):就是对图像的高亮部分进行膨胀,相当于高亮部分的领域扩张 ...

  8. opencv Mat 函数--CheckVector

    学习opencv ,我们需要对opencv的函数有点了解 ,实现什么样子的功能,以及如何实现 下面我们一次来看checkVector 这个函数, int org.opencv.core.Mat.che ...

  9. matlab中imresize函数的用法,为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同

    为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同?今年 4 月,我在依照 MATLAB 代码自己写一个卷积神经网络 C++ 实现的过程中,就发现了这个问题,不过那 ...

最新文章

  1. hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)
  2. linux关闭在线登录用户
  3. 一个强大的粘性标签库
  4. 敏捷开发系列学习总结(15)——Spotify敏捷模式详解三部曲第三篇:工程文化
  5. k8s核心技术-配置管理_ConfigMap---K8S_Google工作笔记0037
  6. 【实践】LightSeq:高性能NLP序列推理实践-字节跳动.pdf(附下载链接)
  7. java 中的匿名内部类
  8. android之datepicker控件用法
  9. 简单的webservice发布和测试
  10. Java核心技术 卷1
  11. H5拼团抽奖拆盲盒源码/价值几万的H5拼团抽奖拆盲盒模式源码
  12. 巨杉数据库登榜互联网周刊“2022中国软件150强”及“2022大数据服务TOP150”
  13. allgro pcb铜皮编辑_干货技巧-Allegro如何设置整体铜皮连接或设置单个管脚连接方式...
  14. lv双肩包尺寸对照表_当红Monogram帆布LV双肩包尺寸究竟有多少?
  15. matlab的特殊字符(上下标和希腊字母等)
  16. 九爷 带你玩转mysql引擎Mylsam
  17. verilog latch
  18. springAOP 学习
  19. 华三 h3c isis协议综合配置
  20. GPU硬件结构和编程模型(源于nvidia的CUDA文档)

热门文章

  1. boost::mp11::mp_apply_q相关用法的测试程序
  2. boost::geometry::dsv用法的测试程序
  3. boost::fusion::unfused_typed用法的测试程序
  4. boost::coroutine模块实现layout的测试程序
  5. GDCM:创建DICOMDIR的测试程序
  6. gdcm::DummyValueGenerator的测试程序
  7. Boost:可移植地自定义boost :: hash的测试程序
  8. ITK:将图像传递给函数
  9. VTK:绘图之FunctionalBagPlot
  10. VTK:几何对象之EllipticalCylinder