作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

原理

形态学是图像处理中常见的名词,图像处理的形态学基本属于数学形态学的范畴,是一门建立在格论和拓扑学基础上的图像分析学科。膨胀操作是其中最基本的一种运算。

简单来说,膨胀就是通过一个蒙版进行图像像素值的修改。针对某一像素点,以其为中心建立蒙版,蒙版中的最大值赋值给该像素点,这就实现了膨胀操作;当处理二值化图像时,图像只有0和255的数值,如果某一灰度值为0的点的蒙版中出现了255,则将该点置为255。效果图见下方图1图2。

函数原型

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

参数说明

  1. InputArray类型的src,输入图像,如Mat类型。
  2. OutputArray类型的dst,输出图像。
  3. InputArray类型的kernel,膨胀操作的内核也就是上面所说的蒙版。为NULL时,默认表示以参考点为中心3*3的核。一般配合函数getStructuringElement使用,该函数可以构造一个指定形状和尺寸的蒙版。
  4. Point类型的anchor,锚点。默认值(-1,-1),表示位于单位中心,一般不用。
  5. int类型的iterations,迭代使用的次数,默认值为1。
  6. int类型的borderType,推断图像外部像素的边界模式,我OpenCV版本的默认值为BORDER_CONSTANT。如果图像边界需要扩展,则不同的模式下所扩展的像素,其生成原则不同。
  7. const Scalar&类型的borderValue,当边界为常数时的边界值,默认值为morphologyDefaultBorderValue()。

测试代码

#include<iostream>
#include<opencv2/opencv.hpp>
#include<ctime>
using namespace std;
using namespace cv;
int main(void)
{cv::Mat test = cv::Mat::zeros(64, 64, CV_8UC1);cv::rectangle(test, cv::Rect(30, 30, 5, 5), 255, -1);cv::Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));cv::Mat result;cv::dilate(test, result, element);imshow("original", test);imshow("result", result);waitKey(0);system("pause");return 0;
}

测试效果

图1 待膨胀目标

图2 膨胀效果图

如上图所示,原先5*5的矩形,我设置了3*3的矩形蒙版,如图1大红框所示,因为红框中有白点,所以黑点置255变白,而再外围的点因为所处蒙版全是0黑点,所以不变颜色。

如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

OpenCV-膨胀cv::dilate相关推荐

  1. OPenCV膨胀函数dilate()的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:使用一个指定的核元素去膨胀一个图像,图像膨胀的过程类似于一个卷积的过程,源图像矩阵A以及结构元素B,B在A矩阵上依次移动,每个位置上B所 ...

  2. OpenCV入门系列 —— cv::dilate 图像膨胀

    OpenCV入门系列 -- cv::dilate 图像膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别 ...

  3. OpenCV入门系列 —— cv::erode、cv::dilate 图像腐蚀和膨胀

    OpenCV入门系列 -- cv::erode.cv::dilate 图像腐蚀和膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用 ...

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

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

  5. opencv 的形态学操作,cv2.erode,cv.dilate等。

    opencv 的形态学操作,cv2.erode,cv.dilate,cv2.morphologyEx的使用. 一.膨胀 cv2.erode(img, kernel_size) 函数参数, img是输入 ...

  6. OpenCV——膨胀与腐蚀

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

  7. OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例(附完整代码)

    Open使用cv :: CascadeClassifier类检测视频流中的对象的实例 OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例 OpenCV使用cv : ...

  8. OpenCV - C++ - cv::Scalar

    OpenCV - C++ - cv::Scalar https://docs.opencv.org/4.2.0/dc/d84/group__core__basic.html typedef Scala ...

  9. C++ opencv Erode and Dilate

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

最新文章

  1. ArrayList使用方法
  2. Jenkins +maven+tomcat自动构建部署(学习笔记三十六)
  3. SwiftUI之深入解析如何创建列表展示视图和列表如何导航跳转新页面
  4. Cannot find module 'express'
  5. 排列组合思维导图_排列组合——排列数专题
  6. 深入理解Docker Volume(一)
  7. 响应式系统的依赖收集追踪原理
  8. php 后期发展,php面对对象之后期绑定
  9. 【BZOJ4566】找相同字符,后缀数组
  10. 计算机名称 steam,Steam电脑配置排名:前19名都是N卡
  11. [再寄小读者之数学篇](2014-05-25 非线性递归数列的敛散性)
  12. C++STL::两种方式实现STL容器的reference语义
  13. 汽车电子之NFC技术
  14. 花生壳内网穿透操作文档
  15. crypto405-grasshopper(网鼎杯2022)
  16. 微信文章搜索工具, 推荐使用它,简单好用
  17. QQ安装目录内的文件及子目录的详细作用
  18. 【PyQt5,2021最新Java常用开源库总结
  19. 苹果mac电脑查看已连接到的wifi密码
  20. 写出宏定义 输出一年有多少秒

热门文章

  1. java项目部署运行
  2. sublime----------快捷键的记录
  3. 使用brew安装composer
  4. weblogic .NoClassDefFoundError: Could not initialize class sun.awt.X11Graphi
  5. IT人终于把自己熬成了民工
  6. Baidu-Rpc中Pb结构转为Json
  7. 重庆自考学历计算机应用基础考试,2017年自考计算机应用基础模拟试题1
  8. 【论文写作】学生信息管理系统总体设计如何写
  9. wps流程图数量如何修改_免费WPS会员领取渠道!(不要转发)
  10. linux安装 grub失败,安装linux+windows的系统 如果grub引导失败的解决方法