OpenCV(cv::morphologyEx())

news/2025/1/15 16:53:30/文章来源:https://www.cnblogs.com/keye/p/18410246

目录
  • 1. 函数原型
  • 2. 示例
  • 3. 常见的形态学操作
  • 4. 应用场景



cv::morphologyEx() 是 OpenCV 中的一个重要函数,用于执行图像的高级形态学操作。形态学操作基于图像中像素邻域的形状(通常是二进制图像)来处理图像,用于增强图像的特定特征。

1. 函数原型

void cv::morphologyEx(InputArray src,         // 输入图像OutputArray dst,        // 输出图像int op,                 // 操作类型InputArray kernel,      // 结构元素(核)Point anchor = Point(-1,-1),  // 核的锚点(默认在核的中心)int iterations = 1,     // 操作重复次数int borderType = BORDER_CONSTANT, // 边界类型const Scalar& borderValue = morphologyDefaultBorderValue()  // 边界值
);

参数:

  1. src:

    • 输入图像,可以是灰度图像或二值图像。它的类型通常是 CV_8UC1(单通道 8 位)或者 CV_8UC3(多通道彩色图像)。
  2. dst:

    • 输出图像,尺寸和类型与输入图像相同。形态学操作结果会存储在这里。
  3. op:

    • 形态学操作类型,可以是以下几种:
      • MORPH_ERODE: 腐蚀操作,最小化局部像素值。
      • MORPH_DILATE: 膨胀操作,最大化局部像素值。
      • MORPH_OPEN: 开操作(先腐蚀后膨胀),用于去除小噪声点。
      • MORPH_CLOSE: 闭操作(先膨胀后腐蚀),用于填补小孔。
      • MORPH_GRADIENT: 形态学梯度,膨胀和腐蚀之差,突出物体边界。
      • MORPH_TOPHAT: 顶帽操作,输入图像与其开操作结果之差,提取比周围亮的区域。
      • MORPH_BLACKHAT: 黑帽操作,闭操作结果与输入图像之差,提取比周围暗的区域。
      • MORPH_HITMISS: 击中击不中操作,主要用于形态学模式匹配。
  4. kernel:

    • 结构元素(核),形态学操作的关键因素。核可以是矩形、椭圆或十字形,指定了像素邻域的形状。常见的核使用函数 cv::getStructuringElement() 生成。核的尺寸和形状直接影响形态学操作的效果。
  5. anchor:

    • 核的锚点,决定形态学操作时哪个点与源图像进行对齐。默认值为 (-1, -1),表示锚点在核的中心。
  6. iterations:

    • 操作重复的次数,默认值为 1。如果设置为更大的数值,则形态学操作将重复执行多次,这有助于增强效果。
  7. borderType:

    • 图像边界的处理方式,决定当核处理图像边界时如何扩展边界。常见值包括:
      • BORDER_CONSTANT: 边界填充为常数值。
      • BORDER_REPLICATE: 复制边界像素。
  8. borderValue:

    • borderTypeBORDER_CONSTANT 时,指定的常数边界值。


2. 示例

cv::Mat src = cv::imread("image.png", cv::IMREAD_GRAYSCALE);
cv::Mat dst;
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));// 进行开操作(去除噪声)
cv::morphologyEx(src, dst, cv::MORPH_OPEN, kernel);// 显示结果
cv::imshow("Source", src);
cv::imshow("MorphologyEx - Open", dst);
cv::waitKey(0);


3. 常见的形态学操作

  1. 腐蚀 (MORPH_ERODE):

    • 腐蚀操作使得图像中的高亮区域变小,黑色区域变大,通常用于去除噪点。
  2. 膨胀 (MORPH_DILATE):

    • 膨胀操作是腐蚀的逆操作,图像中的高亮区域变大,常用于填补物体中的小孔。
  3. 开操作 (MORPH_OPEN):

    • 先腐蚀再膨胀,主要用于去除小噪声。
  4. 闭操作 (MORPH_CLOSE):

    • 先膨胀再腐蚀,主要用于填充小孔和连接物体。
  5. 形态学梯度 (MORPH_GRADIENT):

    • 使用膨胀和腐蚀之差来提取物体的边缘。
  6. 顶帽操作 (MORPH_TOPHAT):

    • 提取比其邻域亮的部分,通常用于光照不均匀的图像。
  7. 黑帽操作 (MORPH_BLACKHAT):

    • 提取比其邻域暗的部分,常用于背景光亮、物体较暗的场景。


4. 应用场景

cv::morphologyEx() 适用于图像预处理,比如去除噪声、增强边缘、分割物体等。形态学操作在模式识别、计算机视觉、医学图像分析等领域有广泛应用。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/796045.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试-JS Web API-事件绑定和事件代理

编写一个通用的事件监听函数 描述事件冒泡的流程 无线下拉的图片列表,如何监听每个图片的点击?---事件代理 用e.target获取触发元素 用matches判断是否是触发元素事件绑定 addEventListenerfunction bindEvent(elem, type, fn) {elem.addEventListener(type, fn) }const btn1…

用 Rust 实现敏感信息拦截插件,提升 AI 网关安全防护能力

本⽂对敏感信息拦截插件的使用方式和实现原理进行了简单介绍,它能够自动检测并处理请求和响应中的敏感词,有效防止敏感信息泄露。通过对不同数据范围的支持和灵活的配置选项,该插件能够适应各种应用场景,确保数据的安全性和合规性。希望对你有帮助!作者:刘毅杰,棱镜七彩…

Linux--软链接,硬链接

在 Linux 和类 Unix 系统中,软链接(符号链接)和硬链接是用于文件系统中引用文件的两种方式。它们各自有不同的特点和用途。 软链接(符号链接) 硬链接定义 软链接是一个指向另一个文件或目录的特殊文件,包含指向目标文件路径的文本信息 硬链接是指向文件系统中同一文件的…

ant design使用本地IconFont文件

先参考这个官网的示例 :官网示例:通过设置 createFromIconfontCN 方法参数对象中的 scriptUrl 字段, 可以使用 iconfont.cn 项目中的图标。在iconfont.cn网站使用symbol方式生成在线链接。 但官网的说明有个问题,就是全部使用的是网络引用,有时候我们需要的环境可能并不是…

容器云平台建设可行性分析报告

一、项目背景和原因1.1 什么是容器云1.2 容器和虚拟机的区别1.3 为什么要建设容器云1.4 我们的建设目标1.5 建设过程可能存在的风险二、容器云PaaS平台构建2.1 总体技术架构2.2 设计原则2.3 总计规划三、容器云平台关键技术选型3.1 容器核心技术3.2 容器编排技术3.3 容器网络技…

机器学习 - 课程笔记

线性回归 代价函数J,也被称为平方误差函数,用来描述假设函数值与真实值的误差大小。其中乘1/2是用于减少平均误差,并且后面求导会有一个2,可以消掉。线性回归的代价函数常用平方误差函数。假设函数的参数是x,代价函数的参数是θ。梯度下降法 要得到最小化代价函数的Θ0和Θ…

通过LiveGBS实现安防监控摄像头GB28181转成WebRTC流实现web浏览器网页无插件低延迟直播

@目录1、WebRTC超低延时直播2、WebRTC延时对比3、LiveGBS的低延时的WebRTC流4、分屏页面如何选择默认播放流5、无法播放Webrtc6、搭建GB28181视频直播平台 1、WebRTC超低延时直播 需要低延时的视频流监控播放,之前可以用rtmp的低延时播放(1秒左右),随着浏览器对rtmp的禁用,…

MUR3040CT-ASEMI快恢复二极管MUR3040CT

MUR3040CT-ASEMI快恢复二极管MUR3040CT编辑:ll MUR3040CT-ASEMI快恢复二极管MUR3040CT 型号:MUR3040CT 品牌:ASEMI 封装:TO-220AB 安装方式:插件 批号:最新 恢复时间:35ns 最大平均正向电流(IF):30A 最大循环峰值反向电压(VRRM):400V 最大正向电压(VF):0.95V~1…

Ros2 - Moveit2 - Grasps(抓握)

MoveIt Grasps 是一款用于抓取块或圆柱体等物体的抓取生成器,可用作 MoveIt 拾取和放置管道的替代品。MoveIt Grasps 提供基于可达性和接近、抬起和后退运动的笛卡尔规划来过滤抓取的功能。 抓握生成算法基于简单的长方体形状,不考虑摩擦锥或其他抓握动力。 MoveIt Grasps 可…

pbootcms模板后台登录页面在哪里修改

在PBootCMS中,如果你想修改后台登录页面的内容,比如文字和链接,可以通过编辑相应的HTML文件来实现。以下是具体的步骤: 修改后台登录页面备份文件:在修改任何文件之前,务必先备份相关文件,以防万一操作失误可以恢复。找到登录页面文件:打开你的PBootCMS安装目录,找到a…

一文总览 CES 升级新特性,全面了解云上的资源使用

摘要:使用云监控服务使您全面了解云上的资源使用情况、业务的运行状况,并及时收到异常告警做出反应,保证业务顺畅运行。1. 简介 云监控服务(CES)为用户提供一个针对弹性云服务器、带宽等资源的立体化监控平台,涵盖云基础设施、高阶服务、外网网络质量监控,是基于主机监控…

解读GaussDB(for MySQL) 冷热存储分离实现原理

摘要:GaussDB(for MySQL)冷热存储分离特性,支持用户直接针对Innodb的page进行归档和回迁操作,且无需调整上层业务即可访问冷数据。本文分享自华为云社区《GaussDB(for MySQL)新特性解读:冷热存储分离》,作者:GaussDB 数据库。 技术背景 业务长期运行,但随着时间推移,越…