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

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

  • 膨胀(Dilation):

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

cpp 复制代码
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()函数进行腐蚀操作。以下是一个示例:

cpp 复制代码
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()函数进行开运算和闭运算操作。以下是一个示例:

cpp 复制代码
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中常见的形态学操作的示例,包括膨胀、腐蚀、开运算和闭运算等。通过这些操作,可以对图像进行形状和结构上的改变和逐渐调整。

相关推荐
我是无敌小恐龙2 小时前
Java SE 零基础入门 Day05 类与对象核心详解(封装+构造方法+内存+变量)
java·开发语言·人工智能·python·机器学习·计算机视觉·数据挖掘
格林威2 小时前
面阵相机 vs 线阵相机:堡盟与Basler选型差异全解析 +C# 实战演示
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
探物 AI3 小时前
【感知·单目测距】单目摄像头测距原理与前向碰撞预警(FCWS)实现
算法·目标检测·计算机视觉
gloomyfish3 小时前
【洞察微瑕】YOLO11+QWEN-VL实现墙体裂缝检测与文字报告生成
人工智能·opencv·算法·计算机视觉
weixin_413063213 小时前
比较阅读理解opencv 和 LuminanceHDR中 色调映射Drago算法
opencv·算法·计算机视觉·hdr·色调映射
hoiii1873 小时前
基于协方差矩阵的车辆检测(Matlab实现)
计算机视觉·matlab·矩阵
六bring个六3 小时前
opencv读取图片和视频
opencv·计算机视觉
格林威3 小时前
面阵相机 vs 线阵相机:堡盟与海康相机选型差异全解析 附C# 实战演示
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
格林威4 小时前
面阵相机 vs 线阵相机:堡盟与海康相机选型差异全解析+python实战演示
开发语言·人工智能·python·数码相机·计算机视觉·视觉检测·工业相机
格林威4 小时前
面阵相机 vs 线阵相机:堡盟与Basler选型差异全解析 +C++ 实战演示
开发语言·c++·人工智能·数码相机·计算机视觉·视觉检测·工业相机