OpenCV入门7:图像形态学变换

本文介绍了OpenCV中常用的形态学操作,如膨胀、腐蚀、开运算和闭运算,通过实例展示了如何使用cv::dilate(),cv::erode(),cv::morphologyEx()函数进行这些操作以改变和调整图像的形状和结构。

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

 欢迎加入“OpenCV学习交流”QQ群:290295071 

形态学是一种针对图像形状和结构进行操作和分析的图像处理方法。在OpenCV中,提供了一些函数和方法用于执行形态学操作。下面将介绍一些常见的形态学操作及其在OpenCV中的实现方式。

  • 膨胀(Dilation):

膨胀操作可以扩展图像中的边缘和明显的亮区域。它通过在图像上滑动一个结构元素(通常是一个正方形或圆形的小区域),将与该结构元素有重叠的区域像素的最大值赋给输出图像中的对应像素。在OpenCV中,可以使用cv::dilate()函数进行膨胀操作。以下是一个示例:

cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 读取灰度图像 cv::Mat dilatedImage; 
// 结构元素为3x3的矩形 
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); 
cv::dilate(image, dilatedImage, kernel); // 图像膨胀
  • 腐蚀(Erosion):

腐蚀操作与膨胀操作相反,可以消除图像中的边缘和明显的亮区域,使其变窄。它通过在图像上滑动一个结构元素,将与该结构元素完全重叠的区域像素的最小值赋给输出图像中的对应像素。在OpenCV中,可以使用cv::erode()函数进行腐蚀操作。以下是一个示例:

cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 读取灰度图像 
cv::Mat erodedImage; 
// 结构元素为3x3的矩形 
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); 
cv::erode(image, erodedImage, kernel); // 图像腐蚀
  • 开运算(Opening)和闭运算(Closing):

开运算和闭运算是形态学操作中常用的组合操作,包括先腐蚀后膨胀(开运算)和先膨胀后腐蚀(闭运算)。开运算可以消除图像中的噪声和细小的斑点,而闭运算可以填充图像中的孔洞和连接断开的区域。在OpenCV中,可以使用cv::morphologyEx()函数进行开运算和闭运算操作。以下是一个示例:

cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 读取灰度图像 cv::Mat openedImage, closedImage; 
// 结构元素为3x3的矩形 
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
cv::morphologyEx(image, openedImage, cv::MORPH_OPEN, kernel); // 开运算 
cv::morphologyEx(image, closedImage, cv::MORPH_CLOSE, kernel); // 闭运算

以上是OpenCV中常见的形态学操作的示例,包括膨胀、腐蚀、开运算和闭运算等。通过这些操作,可以对图像进行形状和结构上的改变和逐渐调整。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值