OpenCV的图像的侵蚀和扩张【C++的OpenCV 第六课-OpenCV图像常用操作(三)】

本文介绍了OpenCV库中的图像侵蚀和扩张操作,包括cv::erode和cv::dilate函数的使用,这两个函数常用于图像降噪和元素隔离。函数详细参数解释和实例演示了如何使用结构元素对图像进行处理,以实现消除噪声、连接图像元素及查找强度突点等效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、图像的侵蚀和扩张

本章节中我们将会学习到:

两个函数的基本使用方法和实例。

关于二者的用途:
1. 消除噪音,这里大家应该记得还有一个东西也是常用于降噪的(图像的模糊滤波处理
2. 隔离单个元素且链接图像中的不同元素
3. 查找图像中的强度凸点或者孔

1.1 侵蚀

1.1.1 函数原型


void cv::erode	(	
					InputArray 	src,
					OutputArray 	dst,
					InputArray 	kernel,
					Point 	anchor = Point(-1,-1),
					int 	iterations = 1,
					int 	borderType = BORDER_CONSTANT,
					const Scalar & 	borderValue = morphologyDefaultBorderValue() 
				)	
  • 参数解释
1、src:输入的图像;通道的数量可以是任意的,
	   		但是深度应该是CV_8U、CV_16U、CV_36S、CV_32F或CV_64F之一。
2、dst:依照输入图像经过处理后输出的图像(这里指侵蚀后)
3、kernel:用于侵蚀的结构原件;如果原件是Mat的对象(element=Mat(),
			则将会创建一个3x3大小的矩形结构原件。
			内核也可以通过getStructuringElement()去创建。
4、anchor:侵蚀内核元件的锚点,默认值是(-1,-1)即视为锚点在该内核的中心。
5、iterations:侵蚀被应用的次数
6、borderType:像素外延的方法,请参见BorderTypes。不支持BORDER_WRAP。
7、borderValue:边界的值(如果边界为等宽,即常量边界)

1.1.2 侵蚀的效果

在这里插入图片描述

1.1.3 关于侵蚀的解释

        通过一个特定的结构元素腐蚀一个图像。图像腐蚀的过程类似于一个卷积的过程,源图像矩阵A以及结构元素B,B在A矩阵上依次移动,每个位置上B所覆盖元素的最小值替换B的中心位置值(即锚点处),完成整个侵蚀的过程。
        扩张是一个道理。

1.2 扩张

1.2.1 函数原型


void cv::dilate	(	
					InputArray 	src,
					OutputArray 	dst,
					InputArray 	kernel,
					Point 	anchor = Point(-1,-1),
					int 	iterations = 1,
					int 	borderType = BORDER_CONSTANT,
					const Scalar & 	borderValue = morphologyDefaultBorderValue() 
				)	
  • 参数解释:
    完全同侵蚀(将“侵蚀”二字换成“扩展”即可)的函数参数解释!!参数说明

1.2.2 扩张的效果

在这里插入图片描述

二、实例

  • 以侵蚀为例:(扩展的代码类似)
#include <iostream>
#include <opencv2/opencv.hpp>

#define PATH_IMG  "D:\\opencvDemo\\imgs\\demo.png"

using namespace cv;
using namespace std;

int main()
{
	Mat img = imread(PATH_IMG);
	if (img.empty())
	{
		cout << "图像打开失败!" << endl;
		return 0;
	}
	Mat imgDst;
	//自定义核
	Mat element = getStructuringElement(cv::MORPH_RECT, Size(20, 20));
	imshow("原图", img);
	dilate(img, imgDst, element);
	imshow("扩张", imgDst);
	waitKey(0);
	return 0;
}
  • 效果
    原图:
    在这里插入图片描述

处理后的图片:
在这里插入图片描述

回到顶部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白piao

创作不易,支持一下!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值