OpenCV-膨胀cv::dilate
作者:翟天保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() );
参数说明
- InputArray类型的src,输入图像,如Mat类型。
- OutputArray类型的dst,输出图像。
- InputArray类型的kernel,膨胀操作的内核也就是上面所说的蒙版。为NULL时,默认表示以参考点为中心3*3的核。一般配合函数getStructuringElement使用,该函数可以构造一个指定形状和尺寸的蒙版。
- Point类型的anchor,锚点。默认值(-1,-1),表示位于单位中心,一般不用。
- int类型的iterations,迭代使用的次数,默认值为1。
- int类型的borderType,推断图像外部像素的边界模式,我OpenCV版本的默认值为BORDER_CONSTANT。如果图像边界需要扩展,则不同的模式下所扩展的像素,其生成原则不同。
- 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;
}
测试效果
如上图所示,原先5*5的矩形,我设置了3*3的矩形蒙版,如图1大红框所示,因为红框中有白点,所以黑点置255变白,而再外围的点因为所处蒙版全是0黑点,所以不变颜色。
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
OpenCV-膨胀cv::dilate相关推荐
- OPenCV膨胀函数dilate()的使用
OPenCV版本:4.4 IDE:VS2017 功能描述 简述:使用一个指定的核元素去膨胀一个图像,图像膨胀的过程类似于一个卷积的过程,源图像矩阵A以及结构元素B,B在A矩阵上依次移动,每个位置上B所 ...
- OpenCV入门系列 —— cv::dilate 图像膨胀
OpenCV入门系列 -- cv::dilate 图像膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别 ...
- OpenCV入门系列 —— cv::erode、cv::dilate 图像腐蚀和膨胀
OpenCV入门系列 -- cv::erode.cv::dilate 图像腐蚀和膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用 ...
- opencv形态学运算:腐蚀(erode)和膨胀(dilate)
形态学操作就是基于形状的一系列图像处理操作.OpenCV为进行图像的形态学变换提供了快捷.方便的函数.最基本的形态学操作有二种,他们是:膨胀与腐蚀(Dilation与Erosion). 膨胀与腐蚀能实 ...
- opencv 的形态学操作,cv2.erode,cv.dilate等。
opencv 的形态学操作,cv2.erode,cv.dilate,cv2.morphologyEx的使用. 一.膨胀 cv2.erode(img, kernel_size) 函数参数, img是输入 ...
- OpenCV——膨胀与腐蚀
膨胀与腐蚀的主要功能: 1.消除噪声: 2.分割出独立像素,在图像中连接相邻元素: 3.寻找图像中明显的极大值区域和极小值区域: 4.求图像梯度: 膨胀是求局部最大值的操作: 膨胀和腐蚀操作都是将图像 ...
- OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例(附完整代码)
Open使用cv :: CascadeClassifier类检测视频流中的对象的实例 OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例 OpenCV使用cv : ...
- OpenCV - C++ - cv::Scalar
OpenCV - C++ - cv::Scalar https://docs.opencv.org/4.2.0/dc/d84/group__core__basic.html typedef Scala ...
- C++ opencv Erode and Dilate
Erode and Dilate 图像的像素值越大的地方,图像越亮,而腐蚀和膨胀就是求图像像素局部最小值和局部最大值的过程 膨胀(dilate):就是对图像的高亮部分进行膨胀,相当于高亮部分的领域扩张 ...
最新文章
- ArrayList使用方法
- Jenkins +maven+tomcat自动构建部署(学习笔记三十六)
- SwiftUI之深入解析如何创建列表展示视图和列表如何导航跳转新页面
- Cannot find module 'express'
- 排列组合思维导图_排列组合——排列数专题
- 深入理解Docker Volume(一)
- 响应式系统的依赖收集追踪原理
- php 后期发展,php面对对象之后期绑定
- 【BZOJ4566】找相同字符,后缀数组
- 计算机名称 steam,Steam电脑配置排名:前19名都是N卡
- [再寄小读者之数学篇](2014-05-25 非线性递归数列的敛散性)
- C++STL::两种方式实现STL容器的reference语义
- 汽车电子之NFC技术
- 花生壳内网穿透操作文档
- crypto405-grasshopper(网鼎杯2022)
- 微信文章搜索工具, 推荐使用它,简单好用
- QQ安装目录内的文件及子目录的详细作用
- 【PyQt5,2021最新Java常用开源库总结
- 苹果mac电脑查看已连接到的wifi密码
- 写出宏定义 输出一年有多少秒
热门文章
- java项目部署运行
- sublime----------快捷键的记录
- 使用brew安装composer
- weblogic .NoClassDefFoundError: Could not initialize class sun.awt.X11Graphi
- IT人终于把自己熬成了民工
- Baidu-Rpc中Pb结构转为Json
- 重庆自考学历计算机应用基础考试,2017年自考计算机应用基础模拟试题1
- 【论文写作】学生信息管理系统总体设计如何写
- wps流程图数量如何修改_免费WPS会员领取渠道!(不要转发)
- linux安装 grub失败,安装linux+windows的系统 如果grub引导失败的解决方法