OpenCV:开运算

目录

1. 简述

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

2.1 代码示例

2.2 运行结果

3. 开运算接口

3.1 参数详解

3.2 代码示例

3.3 运行结果

4. 开运算应用场景

5. 注意事项

6. 总结


相关阅读

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

OpenCV:闭运算-CSDN博客


1. 简述

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

开运算 是一种形态学操作,通常用于去除图像中的小噪点,同时保留较大的前景物体。
它的操作顺序是:

  1. 先对图像进行 腐蚀,去除细小的噪点和瑕疵。
  2. 再进行 膨胀,恢复被腐蚀的前景物体形状。

开运算的主要作用是:

  • 去除噪声(尤其是白色背景下的黑色小物体)。
  • 平滑前景物体的边缘。

开运算的数学表达式为:

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

其中:

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

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

2.1 代码示例

import cv2
import numpy as npimage = cv2.imread('D:\\resource\\filter\\q3.jpg')# 卷积核
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))# 腐蚀操作
result1 = cv2.erode(image, kernel, iterations=1)# 膨胀操作
result2 = cv2.dilate(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_OPEN。
  • kernel:结构元素(卷积核)。决定形态学操作的邻域范围和形状。可以使用 cv2.getStructuringElement() 创建。
  • dst:输出图像。默认为 None。
  • anchor:结构元素的锚点,默认为 (-1, -1),即以核的中心为锚点。
  • iterations:操作的迭代次数,默认为 1。
  • borderType:边界模式,定义图像边界的填充方式,常用 cv2.BORDER_CONSTANT。
  • borderValue:边界值,仅在 borderType 为 cv2.BORDER_CONSTANT 时使用。

常用的参数为前3个:

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

    3.2 代码示例

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

    3.3 运行结果

    结果与2.2一致。


    4. 开运算应用场景

    • 去除小噪点:在二值化图像中,小的孤立噪声点可以通过开运算清除。
    • 提取连通区域:对于连通区域的检测,开运算可以去掉孤立的小物体,仅保留目标区域。
    • 平滑边缘:通过开运算,前景物体的边缘可以更加平滑。

    5. 注意事项

    • 核的大小与形状:卷积核的大小直接影响结果。核过大会过度去除图像细节,核过小则可能无法有效去除噪声。
    • 输入图像类型:开运算适用于二值化或灰度图像,对于彩色图像需先转换。
    • 多次操作:对于复杂噪声,可能需要多次开运算,或调整核的大小与形状。

     6. 总结

    开运算是图像形态学中的基本操作,用于去除小噪点、平滑边缘等。OpenCV 提供了功能强大的接口 cv2.morphologyEx(),可以灵活实现开运算及其他形态学操作。通过选择合适的卷积核,可以在实际项目中轻松应对各种图像处理问题。

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

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

    相关文章

    JavaWeb入门-请求响应(Day3)

    (一)请求响应概述 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器就可访问,应用程序的逻辑和数据都存储在服务端(维护方便,响应速度一般) CS架构:Client/ser…

    【SLAM】于AutoDL云上GPU运行GCNv2_SLAM的记录

    配置GCNv2_SLAM所需环境并实现AutoDL云端运行项目的全过程记录。 本文首发于❄慕雪的寒舍 1. 引子 前几天写了一篇在本地虚拟机里面CPU运行GCNv2_SLAM项目的博客:链接,关于GCNv2_SLAM项目相关的介绍请移步此文章,本文不再重复说明。 GCNv2:…

    罗格斯大学:通过输入嵌入对齐选择agent

    📖标题:AgentRec: Agent Recommendation Using Sentence Embeddings Aligned to Human Feedback 🌐来源:arXiv, 2501.13333 🌟摘要 🔸多代理系统必须决定哪个代理最适合给定的任务。我们提出了一种新的架…

    团体程序设计天梯赛-练习集——L1-025 正整数A+B

    一年之际在于春,新年的第一天,大家敲代码了吗?哈哈 前言 这道题分值是15分,值这个分,有一小点运算,难度不大,虽然说做出来了,但是有两个小疑点。 L1-025 正整数AB 题的目标很简单…

    Leetcode:598

    1,题目 2,思路 脑筋急转弯,看题目一时半会还没搞懂意思。 其实不然就是说ops是个矩阵集合,集合的每个矩阵有俩个元素理解为行列边距 m和n是理解为一个主矩阵,计算ops的每个小矩阵还有这个主矩阵的交集返回面积 3&…

    web前端12--表单和表格

    1、表格标签 使用<table>标签来定义表格 HTML 中的表格和Excel中的表格是类似的&#xff0c;都包括行、列、单元格、表头等元素。 区别&#xff1a;HTML表格在功能方面远没有Excel表格强大&#xff0c;HTML表格不支持排序、求和、方差等数学计算&#xff0c;主要用于布…

    【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践

    Hi &#xff01; 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心&#xff0c;然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理&#xff08;NLP&#xff09;&#xff1f; 2. NLP的基础技术 2.1 词袋模型&#xff08;Bag-of-Words&#xff0c;BoW&#xff…

    第1章 量子暗网中的血色黎明

    月球暗面的危机与阴谋 量子隧穿效应催生的幽蓝电弧&#xff0c;于环形山表面肆意跳跃&#xff0c;仿若无数奋力挣扎的机械蠕虫&#xff0c;将月球暗面的死寂打破&#xff0c;徒增几分诡异。艾丽伫立在被遗弃的“广寒宫”量子基站顶端&#xff0c;机械义眼之中&#xff0c;倒映着…

    AI-ISP论文Learning to See in the Dark解读

    论文地址&#xff1a;Learning to See in the Dark 图1. 利用卷积网络进行极微光成像。黑暗的室内环境。相机处的照度小于0.1勒克斯。索尼α7S II传感器曝光时间为1/30秒。(a) 相机在ISO 8000下拍摄的图像。(b) 相机在ISO 409600下拍摄的图像。该图像存在噪点和色彩偏差。©…

    【Git】初识Git Git基本操作详解

    文章目录 学习目标Ⅰ. 初始 Git&#x1f4a5;注意事项 Ⅱ. Git 安装Linux-centos安装Git Ⅲ. Git基本操作一、创建git本地仓库 -- git init二、配置 Git -- git config三、认识工作区、暂存区、版本库① 工作区② 暂存区③ 版本库④ 三者的关系 四、添加、提交更改、查看提交日…

    使用 Spring JDBC 进行数据库操作:深入解析 JdbcTemplate

    目录 1. Spring JDBC 简介 2. JdbcTemplate 介绍 3. 创建数据库和表 4. 配置 Spring JDBC 5. 创建实体类 6. 使用 JdbcTemplate 实现增、删、改、查操作 7. Spring JDBC 优点 8. 小结 1. Spring JDBC 简介 Spring JDBC 是 Spring 框架中的一个模块&#xff0c;旨在简化…

    BUUCTF [Black Watch 入群题]PWN1 题解

    1.下载文件 exeinfo checksec 32位 IDA32 看到关键函数 read两次 第一次read的变量s在bss段&#xff1b;第二次的buf到ebp距离为 24 但是第二次的read字节只能刚好填满返回地址 传不进去变量 所以想到栈迁移 将栈移动到变量s所在位置上来 同时 这题开了NX 无直接的binsh和s…

    Cubemx文件系统挂载多设备

    cubumx版本&#xff1a;6.13.0 芯片&#xff1a;STM32F407VET6 在上一篇文章中介绍了Cubemx的FATFS和SD卡的配置&#xff0c;由于SD卡使用的是SDIO通讯&#xff0c;因此具体驱动不需要自己实现&#xff0c;Cubemx中就可以直接配置然后生成SDIO的驱动&#xff0c;并将SD卡驱动和…

    java练习(2)

    回文数&#xff08;题目来自力扣&#xff09; 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整…

    使用 Tauri 2 + Next.js 开发跨平台桌面应用实践:Singbox GUI 实践

    Singbox GUI 实践 最近用 Tauri Next.js 做了个项目 - Singbox GUI&#xff0c;是个给 sing-box 用的图形界面工具。支持 Windows、Linux 和 macOS。作为第一次接触这两个框架的新手&#xff0c;感觉收获还蛮多的&#xff0c;今天来分享下开发过程中的一些经验~ 为啥要做这个…

    ComfyUI安装调用DeepSeek——DeepSeek多模态之图形模型安装问题解决(ComfyUI-Janus-Pro)

    ComfyUI 的 Janus-Pro 节点&#xff0c;一个统一的多模态理解和生成框架。 试用&#xff1a; https://huggingface.co/spaces/deepseek-ai/Janus-1.3B https://huggingface.co/spaces/deepseek-ai/Janus-Pro-7B https://huggingface.co/spaces/deepseek-ai/JanusFlow-1.3B 安装…

    索引的底层数据结构、B+树的结构、为什么InnoDB使用B+树而不是B树呢

    索引的底层数据结构 MySQL中常用的是Hash索引和B树索引 Hash索引&#xff1a;基于哈希表实现的&#xff0c;查找速度非常快&#xff0c;但是由于哈希表的特性&#xff0c;不支持范围查找和排序&#xff0c;在MySQL中支持的哈希索引是自适应的&#xff0c;不能手动创建 B树的…

    RK3568中使用QT opencv(显示基础图像)

    文章目录 一、查看对应的开发环境是否有opencv的库二、QT使用opencv一、查看对应的开发环境是否有opencv的库 在开发板中的/usr/lib目录下查看是否有opencv的库: 这里使用的是正点原子的ubuntu虚拟机,在他的虚拟机里面已经安装好了opencv的库。 二、QT使用opencv 在QT pr…

    29.Word:公司本财年的年度报告【13】

    目录 NO1.2.3.4 NO5.6.7​ NO8.9.10​ NO1.2.3.4 另存为F12&#xff1a;考生文件夹&#xff1a;Word.docx选中绿色标记的标题文本→样式对话框→单击右键→点击样式对话框→单击右键→修改→所有脚本→颜色/字体/名称→边框&#xff1a;0.5磅、黑色、单线条&#xff1a;点…

    省级-新质生产力数据(2010-2022年)-社科数据

    省级-新质生产力数据&#xff08;2010-2022年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90028612 https://download.csdn.net/download/paofuluolijiang/90028612 新质生产力是指在现代科技和经济社会发展的推动下&#xff0c;由新的生产要素…