OPenCV膨胀函数dilate()的使用

article/2025/8/29 5:34:33

OPenCV版本:4.4

IDE:VS2017

功能描述

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

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

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

函数使用一个指定的核元素去膨胀源图像,内核有一个可定义的 锚点,我们叫他内核中心点,膨胀操作时,获取内核覆盖区域最大像素值,并代替锚点的像素,最大值通过以下公式获取:
dst ( x , y ) = max ⁡ ( x ′ , y ′ ) : element ( x ′ , y ′ ) ≠ 0 src ( 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)=0maxsrc(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);
}

运行结果:
在这里插入图片描述

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


http://chatgpt.dhexx.cn/article/lYSdptA5.shtml

相关文章

OpenCV每日函数 图像过滤模块 (5) dilate膨胀函数

一、概述 通过使用特定的结构元素来扩大图像。该函数使用指定的结构元素扩展源图像,该结构元素确定取最大值的像素邻域的形状: 膨胀可以应用数次(迭代)。 在多通道图像的情况下,每个通道都是独立处理的。 膨胀: 腐蚀: 二、dilate函数 1、函数原型 cv::dilate…

生产环境屏蔽swagger

只需要在swagger的配置类上增加Profile( )注解&#xff0c;指定环境变量&#xff0c;即可屏蔽生产环境上的swagger&#xff0c;如下&#xff1a; 先使用dev环境&#xff0c;访问swagger&#xff0c;结果如下&#xff1a; 再使用test环境&#xff0c;访问swagger&#xff0c;结果…

生产环境解决跨域

1.先决条件是在开发环境中使用的是代理。 2然后在生产环境当中&#xff0c;增加一个proxy代理&#xff1b; &#xff08;1&#xff09;先下载&#xff1a;cnpm install http-proxy-middleware -D &#xff08;2&#xff09;引入&#xff1a; &#xff08;3&#xff09;使用&am…

linux环境下编译部署php生产环境

linux环境下编译部署php生产环境 版本控制 php&#xff1a;7.2.4 nginx&#xff1a;1.9.9 部分插件版本 xlswriter&#xff1a;1.3.3.2 redis:3.1.3 一、安装php 1.安装依赖(之后安装缺少的依赖都可以用yum安装) yum install -y gcc gcc-c make zlib zlib-devel pcre pcre…

用 source map 调试生产环境

当我们的应用程序部署到生产环境时&#xff0c;我们发现它与我们在开发环境时的代码不同。我们的代码在构建过程中会以各种方式进行修改和优化。 TypeScript 被转译、压缩。生成的 JavaScript 包尽可能小并且能够在浏览器中正常运行。 所有这些步骤都很有效率&#xff0c;它们…

uniapp 小程序 开发环境和生产环境

uni开发小程序 运行到开发工具 再上传 process.env.NODE_ENV 获取的值是development 一直是开发环境 用uni发行 上传到微信公众平台是生成环境 在 HBuilderX 中&#xff0c;点击“运行”编译出来的代码是开发环境&#xff0c;点击“发行”编译出来的代码是生产环境 let url;if …

Vue cli3配置生产环境,开发环境,和测试环境

目录1、先在package.json文件中添加&#xff1a; 2、在项目目录下建立 .env文件和.env.test文件 3、配置api变量 3.1、配置axios的baseURL路径 3.2、自己拼接的路径 4、.env知识点补充 4.1&#xff0c;关于文件名&#xff1a;必须以如下方式命名&#xff0c;不要…

31 SpringBoot多环境的切换(生产环境、开发环境、测试环境)

参考链接&#xff1a; Spring官网 Spring官网 外部配置加载顺序的说明 SpringBoot多环境的切换(生产环境、开发环境、测试环境)_周太阳的博客-CSDN博客_springboot测试生产环境切换 java maven 测试生产环境配置_SpringBoot生产环境和测试环境配置分离的教程详解_落云歌语文…

生产环境关闭 swagger

#生产环境需要关闭 swagger 防止接口暴露 1&#xff0c;启动判断写在相应的环境配置文件中&#xff0c;根据条件判断是否启动 swagger &#xff1a; 添加配置项&#xff1a;swagger.is.enable #是否激活 swagger true or false swagger.is.enabletrue2&#xff0c;代码取值&a…

前端工程师生产环境 debugger 技巧

关注公众号 前端开发博客&#xff0c;领27本电子书 回复加群&#xff0c;自助秒进前端群 导言 开发环境 debug 是每个程序员上岗的必备技能。生产环境呢&#xff1f;虽然生产环境 debug 是一件非常不优雅的行为&#xff0c;但是由于种种原因&#xff0c;我们又不得不这么干。 那…

【微信小程序 | 实战开发】开发环境、测试环境和生产环境

写在前面&#xff1a; 你是否想要掌握人工智能的最新技术和应用&#xff1f;你是否想要成为未来社会的创新者和领导者&#xff1f;你是否想要和全球的优秀导师和同学一起学习和交流&#xff1f;如果你的答案是肯定的&#xff0c;那么欢迎来到床长人工智能教程网站&#xff0c;这…

Nginx生产环境平滑升级

一.背景 最近遇到一个比较尴尬而又实际的问题&#xff0c;那就是我们生产环境使用的Nginx是Centos6的老古董。业务需求需要加载Nginx的一个模块来实现&#xff0c;但是版本太老了&#xff0c;需要Nginx1.18之后才能支持&#xff0c;而我们的是Nginx1.12。 那升级Nginx是我们要做…

生产环境和开发环境_环境部署:开发、测试和线上环境的区别

点击蓝字 关注我们 软件开发环境(Software Development Environment,SDE)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者…

python生产环境部署

文章目录 一、前言二、准备工作三、安装python四、安装虚拟环境 一、前言 在实际工作中&#xff0c;很多公司的生产环境都是隔离外网的&#xff0c;而且往往多个项目组共用相同的服务器&#xff0c;因此经常会遇到两个问题&#xff1a; python以及第三方模块的版本难以统一&a…

django生产环境部署

django生产环境部署 生产环境中的数据流 参考文档&#xff1a; wsgi详解&#xff1a;https://blog.csdn.net/li_101357/article/details/52748323 wsgi协议介绍&#xff08;萌新版&#xff09;&#xff1a;https://blog.csdn.net/j163you/article/details/80919360 廖雪峰…

开发环境、测试环境、生产环境 到底是什么?

读一些官方文档的时候&#xff0c;总会遇到以下几个关键的名词&#xff0c;一开始我不太懂&#xff0c;绕来绕去&#xff0c;让我对文档阅读产生了误会&#xff0c;于是查找了一些资料。 百度解释如下&#xff1a; 开发环境&#xff1a;开发环境是程序猿们专门用于开发的服务器…

生产环境和开发环境

开发环境&#xff08;development&#xff09; 开发环境&#xff1a; 是指程序猿专门用于开发的服务器&#xff0c;配置比较简单随意&#xff0c;主要是为了开发过程中调试方便&#xff0c;一般打开全部错误报告和测试工具。 生产环境&#xff1a;&#xff08;production&…

postman接口自动化测试

Postman除了前面介绍的一些功能&#xff0c;还有其他一些小功能在日常接口测试或许用得上。今天&#xff0c;我们就来盘点一下&#xff0c;如下所示&#xff1a; 1.数据驱动     想要批量执行接口用例&#xff0c;我们一般会将对应的接口用例放在同一个Collection中&#xf…

接口自动化测试:Postman实战教程

01 接口测试 &#xff08;1&#xff09;服务器端&#xff08;server&#xff09;&#xff1a;在使用别人的服务器上&#xff0c;例如微信APP客户端&#xff0c;服务端在腾讯的服务端上&#xff0c;微信上的账号信息&#xff0c;聊天记录均存储在服务端上&#xff1b;用户A发送…

APITest接口自动化测试平台

接口自动化测试平台 环境 JAVA 1.8 MYSQL 测试管理平台为 war&#xff08;SpringSpringMVCMaven&#xff09; 定时执行为 jar&#xff08;SpringMaven&#xff09; ps&#xff1a;该项目测试管理平台&#xff08;包括用例调试&#xff09;与定时执行是分开的&#xff0c;可分开…