OpenCV:闭运算

目录

1. 简述

2. 用膨胀和腐蚀实现闭运算

2.1 代码示例

2.2 运行结果

3. 闭运算接口

3.1 参数详解

3.2 代码示例

3.3 运行结果

4. 闭运算的应用场景

5. 注意事项


相关阅读

OpenCV:图像的腐蚀与膨胀-CSDN博客

OpenCV:开运算-CSDN博客


1. 简述

简而言之:闭运算 = 膨胀 + 腐蚀

闭运算是一种形态学操作,用于填补前景物体中的小孔洞、连接断裂部分以及平滑前景边缘。
它的操作顺序是:

  1. 膨胀:先扩展前景物体,使前景变大。
  2. 腐蚀:再缩小前景物体,恢复形状。

闭运算的作用可以概括为:

  • 填补前景中的小空隙。
  • 连接相近的前景区域。
  • 平滑边界。

数学表达式为:

A \bullet B = \left ( A \oplus B \right ) \ominus B

其中:

  • A 是输入图像。
  • B 是卷积核。
  • ⊕ 表示膨胀操作。
  • ⊖ 表示腐蚀操作。

2. 用膨胀和腐蚀实现闭运算

2.1 代码示例

import cv2
import numpy as npimage = cv2.imread('D:\\resource\\filter\\q4.jpg')# 卷积核
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))# 膨胀操作
result1 = cv2.dilate(image, kernel, iterations=1)# 腐蚀操作
result2 = cv2.erode(result1, kernel, iterations=1)# 显示原始图像、闭运算(膨胀 + 腐蚀)图像
cv2.imshow('image', image)
cv2.imshow('result2', result2)cv2.waitKey(0)
cv2.destroyAllWindows()

2.2 运行结果

从左到右:

  • 原始黑底白字图像,白字内部带一些黑色的噪点。
  • 图像进行膨胀、腐蚀之后的结果,内部黑色噪点消失。 

3. 闭运算接口

在 OpenCV 中,闭运算由函数 cv2.morphologyEx() 实现,其关键参数如下:

cv2.morphologyEx(src, op, kernel, dst=None, anchor=(-1, -1), iterations=1, borderType=cv2.BORDER_CONSTANT, borderValue=0)

3.1 参数详解

  • src:输入图像。通常是二值化图像或灰度图像。
  • op:操作类型,闭运算的标识符为 cv2.MORPH_CLOSE。
  • kernel:结构元素(卷积核),决定形态学操作的范围和形状。
  • dst:输出图像。默认为 None。
  • anchor:结构元素的锚点,默认为 (-1, -1),即以核的中心为锚点。
  • iterations:操作的迭代次数,默认为 1。
  • borderType:边界模式,定义图像边界的填充方式,常用 cv2.BORDER_CONSTANT。
  • borderValue:边界值,仅在 borderType 为 cv2.BORDER_CONSTANT 时使用。

    常用的参数为前3个:

    cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

    3.2 代码示例

    import cv2
    import numpy as npimage = cv2.imread('D:\\resource\\filter\\q4.jpg')# 卷积核
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))# 膨胀操作
    #result1 = cv2.dilate(image, kernel, iterations=1)# 腐蚀操作
    #result2 = cv2.erode(result1, kernel, iterations=1)# 闭运算
    result2 = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)# 显示原始图像、闭运算(膨胀 + 腐蚀)图像
    cv2.imshow('image', image)
    cv2.imshow('result2', result2)cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    3.3 运行结果


    4. 闭运算的应用场景

    • 填补前景中的小孔洞:闭运算可以有效填补前景区域中的小空洞,从而使目标更加完整。
    • 连接断裂的前景区域:当前景物体存在细小的断裂区域时,闭运算可以将其连接起来。
    • 平滑前景边界:通过闭运算,前景的边界可以变得更加平滑,去除不必要的凹陷。

    5. 注意事项

    • 核的大小:选择适当的核大小尤为重要,过大或过小的核可能会导致处理效果不佳。
    • 输入图像类型:通常对二值化图像进行闭运算效果更明显。
    • 迭代次数:可以通过调整迭代次数来进一步增强效果。

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

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

    相关文章

    Docker技术简介

    Docker容器技术 一、认识Docker容器技术和镜像仓库 容器 容器是一种轻量级、可移植、自包含的软件运行环境,允许多个应用程序在同一个操作系统实例上独立运行,而不会互相干扰。想必大家有点不好理解,那么 利用通俗易懂的方式概述容器: 想象一下,你有一个应用程序,但是这…

    Windows程序设计9:文件的读写操作

    文章目录 前言一、文件的写操作WriteFile1.WriteFile介绍2.WriteFile实例二、文件的读操作ReadFile1.ReadFile简介2.ReadFile实例总结前言 Windows程序设计9:文件的读写操作。 一、文件的写操作WriteFile 1.WriteFile介绍 从文件指针指向的位置开始,将数据写入到一个文件中…

    AJAX笔记入门篇

    黑马程序员视频地址: 黑马程序员前端AJAX入门到实战全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2https://www.bilibili.com/video/BV1MN411y7pw?vd_source…

    洛谷 P10288 [GESP样题 八级] 区间 C++ 完整题解(STL二分法)

    本文并非最优解,但能通过。 一、题目链接 P10288 [GESP样题 八级] 区间 - 洛谷 二、解题思路 **本题的大意就是求出a[l~r]间x出现的次数,由于数据较大、较多,所以暴力容易超时。** 首先新建一个mp,mp[x]是一个vector,里…

    springboot集成钉钉,发送钉钉日报

    目录 1.说明 2.示例 3.总结 1.说明 学习地图 - 钉钉开放平台 在钉钉开放文档中可以查看有关日志相关的api,主要用到以下几个api: ①获取模板详情 ②获取用户发送日志的概要信息 ③获取日志接收人员列表 ④创建日志 发送日志时需要根据模板规定日志…

    android主题设置为..DarkActionBar.Bridge时自定义DatePicker选中日期颜色

    安卓自定义DatePicker选中日期颜色 背景:解决方案:方案一:方案二:实践效果: 背景: 最近在尝试用原生安卓实现仿element-ui表单校验功能,其中的的选择日期涉及到安卓DatePicker组件的使用&#…

    学习串行通信

    本文来源: [8-1] 串口通信_哔哩哔哩_bilibili 智谱清言 ------------ 串口(Serial Port): 串口是一种应用非常广泛的通讯接口,串口成本低,容易使用,通信线路简单,可实现两个设…

    【memgpt】letta 课程4:基于latta框架构建MemGpt代理并与之交互

    Lab 3: Building Agents with memory 基于latta框架构建MemGpt代理并与之交互理解代理状态,例如作为系统提示符、工具和agent的内存查看和编辑代理存档内存MemGPT 代理是有状态的 agents的设计思路 每个步骤都要定义代理行为 Letta agents persist information over time and…

    (二)QT——按钮小程序

    目录 前言 按钮小程序 1、步骤 2、代码示例 3、多个按钮 ①信号与槽的一对一 ②多对一(多个信号连接到同一个槽) ③一对多(一个信号连接到多个槽) 结论 前言 按钮小程序 Qt 按钮程序通常包含 三个核心文件: m…

    SpringCloudGateWay和Sentinel结合做黑白名单来源控制

    假设我们的分布式项目,admin是8087,gateway是8088,consumer是8086 我们一般的思路是我们的请求必须经过我们的网关8088然后网关转发到我们的分布式项目,那我要是没有处理我们绕过网关直接访问项目8087和8086不也是可以&#xff1…

    玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱

    系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…

    C# Winform制作一个登录系统

    using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace 登录 {p…

    第11章:根据 ShuffleNet V2 迁移学习医学图像分类任务:甲状腺结节检测

    目录 1. Shufflenet V2 2. 甲状腺结节检测 2.1 数据集 2.2 训练参数 2.3 训练结果 2.4 可视化网页推理 3. 下载 1. Shufflenet V2 shufflenet v2 论文中提出衡量轻量级网络的性能不能仅仅依靠FLOPs计算量,还应该多方面的考虑,例如MAC(memory acc…

    AJAX案例——图片上传个人信息操作

    黑马程序员视频地址&#xff1a; AJAX-Day02-11.图片上传https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p26 图片上传 <!-- 文件选择元素 --><input type"file"…

    AI DeepSeek-R1 Windos 10 环境搭建

    1、安装&#xff1a; 下载 Python |Python.org CUDA Drivers for MAC Archive | NVIDIA pip 和virtualenv Download Ollama on Windows 如下图 2、下载模型 deepseek-r1 ollama run deepseek-r1 或者可以ollama run deepseek-r1:8b 或 3、安装一个可视化对话Chatbox 下载 …

    【AI绘画】MidJourney关键词{Prompt}全面整理

    AI绘画整理&#xff0c;MidJourney关键词。喜欢AI绘画的朋友必备&#xff0c;建议收藏&#xff0c;后面用到时供查阅使用。 1、光线与影子篇 中 英 闪耀的霓虹灯 shimmeringneon lights 黑暗中的影子 shadows in the dark 照亮城市的月光 moonlightilluminatingthe cit…

    剑指offer 数组 持续更新中...

    文章目录 1. 数组中重复的数字1.1 问题描述1.2 方法1: 排序1.3 方法2: 哈希表1.4 方法3: 原地交换 2. 寻找重复数2.1 问题描述2.2 方案1&#xff0c;使用辅助数组2.3 方案2&#xff0c;使用二分 3. 二维数组的查找3.2 方案1&#xff0c;贪心 4. 合并两个有序数组4.1 问题描述4.…

    SQLAlchemy 2.0的简单使用教程

    SQLAlchemy 2.0相比1.x进行了很大的更新&#xff0c;目前网上的教程不多&#xff0c;以下以链接mysql为例介绍一下基本的使用方法 环境及依赖 Python:3.8 mysql:8.3 Flask:3.0.3 SQLAlchemy:2.0.37 PyMySQL:1.1.1使用步骤 1、创建引擎&#xff0c;链接到mysql engine crea…

    nodejs:express + js-mdict 网页查询英汉词典

    向 DeepSeek R1 提问&#xff1a; 我想写一个Web 前端网页&#xff0c;后台用 nodejs js-mdict, 实现在线查询英语单词 1. 项目结构 首先&#xff0c;创建一个项目目录&#xff0c;结构如下&#xff1a; mydict-app/ ├── public/ │ ├── index.html │ ├── st…