OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

article/2025/8/28 23:16:54

通俗的说:

膨胀算法使图像扩大一圈。
腐蚀算法使二值图像减小一圈。


腐蚀:删除对象边界的某些像素
膨胀:给图像中的对象边界添加像素


算法:


从图像处理角度看,二值图像的腐蚀和膨胀就是将一个小型二值图(结构元素,一般为3*3大小)在一个大的二值图上逐点移动并进行比较,根据比较的结果作出相应处理而已。

膨胀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结构图像的该像素为0,否则为1.结果:使二值图像扩大一圈。


腐蚀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结构图像的该像素为1,否则为0.结果:使二值图像减小一圈。


注意:

OpenCV里面的腐蚀膨胀都是针对 白色 目标区域的。

说,膨胀使图像 变大一圈, 那是指 图像中的 白色目标区域 扩大了一圈~~~大笑~~~腐蚀,亦然。

====================================

代码:

#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <cvaux.h> //必须引此头文件

 

#pragma comment(lib, "cv.lib") #pragma comment(lib, "cxcore.lib") #pragma comment(lib, "highgui.lib")

int main( int argc, char** argv ) { IplImage *img = cvLoadImage("rice.png",0); if(img == NULL) { printf("img load failed!\n"); return 0; } IplImage *img_erode = cvCreateImage(cvGetSize(img), 8, 1); IplImage *img_dilate = cvCreateImage(cvGetSize(img), 8, 1); cvErode( img,img_erode, NULL,1); //腐蚀 cvDilate( img,img_dilate, NULL,1); //膨胀 cvNamedWindow("img_erode"); cvNamedWindow("img_dilate"); cvShowImage("img_erode",img_erode); cvShowImage("img_dilate",img_dilate); cvWaitKey(-1); cvReleaseImage(&img_dilate); cvReleaseImage(&img_erode); cvDestroyAllWindows(); return 0; }
图示:



附:

Dilate 使用任意结构元素膨胀图像

void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

src
输入图像.
dst
输出图像.
element
用于膨胀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
iterations
膨胀的次数


对彩色图像,每个彩色通道单独处理。


Erode 使用任意结构元素腐蚀图像

void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

src
输入图像.
dst
输出图像.
element
用于腐蚀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
iterations
腐蚀的次数


函数 cvErode 对输入图像使用指定的结构元素进行腐蚀,该结构元素决定每个具有最小值象素点的邻域形状:


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

相关文章

opencv-python常用函数解析及参数介绍(五)——腐蚀与膨胀

腐蚀与膨胀 前言膨胀腐蚀开运算与闭运算礼帽与黑帽运用膨胀和腐蚀获得图像轮廓 前言 有些时候图片上会有一些划痕或者污渍&#xff0c;会影响图片的质量&#xff0c;假设我有一张写有“艾醒”的图片&#xff0c;但是有花花绿绿的划痕和污渍&#xff0c;这时我们就可以运用腐蚀…

OpenCV-Python教程:形态学变换~腐蚀和膨胀(erode,dilate)

原文链接&#xff1a;http://www.juzicode.com/opencv-python-erode-dilate 返回Opencv-Python教程 形态学变换是基于图像形状的变换过程&#xff0c;通常用来处理二值图像&#xff0c;当然也可以用在灰度图上。OpenCV中的形态学变换同平滑处理一样也是基于一种“滑动窗口”的…

计算机视觉开源库OpenCV之cv2.erode()和cv2.dilate()函数

cv2.erode()腐蚀&#xff1a;将前景物体变小&#xff0c;理解成将图像断开裂缝变大&#xff08;在图片上画上黑色印记&#xff0c;印记越来越大&#xff09; dst cv.erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) cv2.dilate()膨胀&…

opencv-膨胀 dilate()

【功能】 膨胀是对白色部分&#xff08;高亮部分&#xff09;而言的&#xff0c;膨胀就是图像中的高亮部分进行膨胀&#xff0c;“领域扩张”&#xff0c;效果图拥有比原图更大的高亮区域。 膨胀是结构元素反射的平移与处理的图像的交集不为空。&#xff08;结构元素B 与 图像…

OpenCvSharp函数:Dilate膨胀、GetStructuringElement获取形态操作的结构元素、Erode腐蚀

Dilate膨胀 函数说明&#xff1a;用特定的结构元素膨胀图像。膨胀可以看成是最大值滤波&#xff0c;即用最大值替换中心像素点。该函数就地模式&#xff0c;可以指定迭代次数&#xff0c;多通道图像的话&#xff0c;每个通道分开处理。 用3x3矩形结构元素膨胀 //函数原型 void …

OpenCV学习十一:dilate、erode 膨胀及腐蚀

膨胀及腐蚀&#xff0c;函数很简单&#xff0c;就写了个Demo 定义&#xff1a; 膨胀---图像膨胀的过程类似于一个卷积的过程&#xff0c;假设有图像矩阵A以及结构元素B&#xff08;注意&#xff0c;B的形状、尺寸没有限制&#xff09;&#xff0c;B在A矩阵上依次移动&#xf…

OpenCV之图像膨胀:dilate函数(C++实现)

dilate函数是使用像素邻域内的局部极大运算符来膨胀图像。 函数原型&#xff1a; void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchorPoint(-1, -1), int iterations1, int borderTypeBORDER_CONSTANT, const Scalar& borderValuemorphology…

【Opencv--形态学操作】膨胀、腐蚀、开/闭操作:cv2.morphologyEx、cv2.erode、cv2.dilate

【Opencv–形态学操作】膨胀、腐蚀、开/闭操作 文章目录 【Opencv--形态学操作】膨胀、腐蚀、开/闭操作1. 介绍2. 形态学操作2.1 腐蚀和膨胀2.1.1 腐蚀2.1.2 膨胀2.1.3 代码示例 2.2 开/闭操作2.2.1 开操作2.2.2 闭操作2.2.3 代码示例 2.3 礼帽和黑帽2.3.1 礼帽运算2.3.2 黑帽运…

opencv 图像腐蚀膨胀 erode dilate

#include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dstbin, distancetransform,rel, rel2;img imread("m3.jpg");//转为灰度图cvtColor(img, dst, COLOR_BGR2GRAY);//二…

dilate函数

dilate函数 函数的调用形式&#xff1a; void dilate ( InputArray src , OutputArray dst , InputArray kernel , Point anchor Point(-1,-1), int iterations 1, int borderType BORDER_CONSTANT, const Scalar& borderValue morphologyDefaultBorderValue() ) 函…

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

形态学操作就是基于形状的一系列图像处理操作。OpenCV为进行图像的形态学变换提供了快捷、方便的函数。最基本的形态学操作有二种&#xff0c;他们是&#xff1a;膨胀与腐蚀(Dilation与Erosion)。 膨胀与腐蚀能实现多种多样的功能&#xff0c;主要如下&#xff1a; 消除噪声分…

C++ 膨胀与腐蚀(dilate、erode)

参考&#xff1a;https://blog.csdn.net/poem_qianmo/article/details/23710721 膨胀&#xff1a; 函数&#xff1a;一般只需输前三个参数&#xff1a;输入图像、输出图像、卷积内核 void dilate( InputArray src, OutputArray dst, InputArray kernel, Po…

PYTORCH 笔记 DILATE 代码解读

dilate 完整代码路径&#xff1a;vincent-leguen/DILATE: Code for our NeurIPS 2019 paper "Shape and Time Distortion Loss for Training Deep Time Series Forecasting Models" (github.com) 1 main 函数 1.1 导入库 import numpy as np import torch from da…

Opencv中的erode和dilate(腐蚀和膨胀-python实现)

文章目录 1.腐蚀原理&#xff08;1&#xff09;具体实现过程&#xff08;2&#xff09;.函数讲解 &#xff08;3&#xff09;.代码实战2.膨胀原理&#xff08;1&#xff09;具体实现过程&#xff08;2&#xff09;函数讲解&#xff08;3&#xff09;代码实现 1.腐蚀原理 &…

OpenCV-Python腐蚀膨胀函数erode、dilate使用详解

☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一、引言 在《OpenCV-Python图像处理&#xff1a;腐蚀和膨胀原理及erode、dilate函数介绍&#xff1a;https://blog.csdn.net/LaoYuanPython/article/details/109441709》介绍了图像腐蚀和膨胀的基本原理&a…

OpenCV-Python图像处理:腐蚀和膨胀原理及erode、dilate函数介绍

☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一、引言 关于图像的腐蚀和膨胀&#xff0c;网上介绍的资料非常多&#xff0c;老猿也看了很多&#xff0c;总体来说主要偏向于就使用OpenCV腐蚀和膨胀函数的应用&#xff0c;另外原理介绍的有一小部分&#…

opencv之dilate()函数

概述 dilate()函数可以对输入图像用特定结构元素进行膨胀操作,该结构元素确定膨胀操作过程中的邻域的形状,各点像素值将被替换为对应邻域上的最大值: API说明 C++ API: void cv::dilate(InputArraysrc,(原始图像:通道数不限,depth必须是CV_8U,CV_16U,CV_16S,CV_…

OpenCV-膨胀cv::dilate

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 原理 形态学是图像处理中常见的名词&#xff0c;图像处理的形态学基本属于数学形态学的范畴&#xff0c;是一门建立在格论和拓扑…

【图像处理】腐蚀(erode)和膨胀(dilate)

【图像处理】腐蚀&#xff08;erode&#xff09;和膨胀&#xff08;dilate&#xff09; 原理腐蚀&#xff08;erode&#xff09;膨胀&#xff08;dilate&#xff09; OpenCV实现C实现python实现 开运算&#xff08;Opening Operation&#xff09;闭运算&#xff08;Closing Ope…

chatgpt赋能Python-python_dilate

Python中的dilate操作&#xff1a;了解该操作及其应用 在计算机视觉领域&#xff0c;dilate操作是一种常用的图像处理技术。在Python中&#xff0c;我们可以使用OpenCV库来实现dilate操作。本文将介绍dilate操作的基本概念&#xff0c;讨论其应用及如何使用Python进行实现。 …