Python opencv 先腐蚀后膨胀 消除图像噪声

news2025/3/1 1:41:50

cv2.getStructuringElement()介绍

在进行图像形态学操作时,首先需要构造一个特定的核,该核可以自定义生成,也可以通过cv2.getStructuringElement()函数构造。

cv2.getStructuringElement(shape, ksize)

参数:
shape ---- 代表形状类型

  • cv2.MORPH_RECT:代表矩形结构类型,所有元素值都是1
  • cv2.MORPH_CROSS:代表十字形结构类型,所有元素值都是1
  • cv2. MORPH_ELLIPSE:代表椭圆形结构类型,所有元素都i是1

ksize ---- 代表形状元素的大小

import cv2
import numpy as np

kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
kernel2 = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))
kernel3 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))

print(kernel1)
print('\n', kernel2)
print('\n', kernel3)

# 输出为:
# [[1 1 1 1 1]
#  [1 1 1 1 1]
#  [1 1 1 1 1]
#  [1 1 1 1 1]
#  [1 1 1 1 1]]
#
#  [[0 0 1 0 0]
#  [0 0 1 0 0]
#  [1 1 1 1 1]
#  [0 0 1 0 0]
#  [0 0 1 0 0]]
# 
#  [[0 0 1 0 0]
#  [1 1 1 1 1]
#  [1 1 1 1 1]
#  [1 1 1 1 1]
#  [0 0 1 0 0]]

cv2.morphologyEx()函数介绍

该函数是一种形态学变化函数。数学形态学可以理解为一种滤波行为,因此也被称为形态学滤波。滤波中使用的滤波器(kernal),在形态学中称为结构元素。

cv2.morphologyEx(img, op, kernel)

参数:
img ---- 代表图像

op ---- 代表对于图像进行的操作

  • cv2.MORPH_ERODE:代表腐蚀操作
  • cv2.MORPH_DILATE:代表膨胀操作
  • cv2.MORPH_OPEN:代表开运算,先腐蚀后膨胀的过程。消除噪声,平滑边界,不明显改变其面积。
  • cv2.MORPH_CLOSE:代表闭运算,先膨胀后腐蚀的过程,闭运算可以用来消除小黑洞。
  • cv2.MORPH_GRADIENT:代表膨胀图减去腐蚀图,用于得到简洁的轮廓。
  • cv2.MORPH_TOPHAT:代表顶帽操作,原始图像减去开运算图像,得到外部细节。
  • cv2.MORPH_BLACKHAT:代表黑帽操作,闭运算图像减去原始图像,得到内部细节。

kernel ---- 代表滤波器

两个函数结合,可以对图像进行先腐蚀后膨胀,消除图像中噪声。

import cv2

# 先腐蚀,后膨胀,消除噪声
img = cv2.imread('before_img.jpg')

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))
np_img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imwrite('after_img.jpg', opening)

before_img.jpg
在这里插入图片描述

after_img.jpg

在这里插入图片描述

可以发现图中孤立的小黑点噪音被去除了!

参考链接:
https://blog.csdn.net/camouflagerainy/article/details/125240516
https://blog.csdn.net/qq_39507748/article/details/104539673

日常学习记录,一起交流讨论吧!侵权联系~

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

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

相关文章

常见在线AI绘画平台

系列文章目录 Midjourney AI绘画工具使用保姆级教程 本地部署Stable Diffusion教程,亲测可以安装成功 Stable Diffusion界面参数及模型使用 文章目录系列文章目录前言一、Midjourney二、DreamStudio三、Lexica四、STOCKIMG.AI五、Dream by WOMBO六、PicSo七、百…

ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析

查看原文>>>ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析 目录 专题一、空间数据获取与制图 专题二、ArcGIS专题地图制作 专题三、空间数据采集与处理 专题四、遥感数据处理与应用 专题五、DEM数据…

macOS Big Sur 11.7.6 (20G1231) Boot ISO 原版可引导镜像

本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 2023 年 4 月 10 日(北京…

压力测试工具JMeter的下载安装与基础使用(一)

JMeter的下载安装与基础使用1.环境准备2.下载与配置2.1下载并解压2.2 配置系统变量 JMETER_HOME2.3配置系统变量 CLASSPATH3.测试JMeter是否配置成功4. 语言修永久修改为中文(可选)1.环境准备 JMeter是用java开发的,示例Apache JMeter5.5版本…

css动画及背景设置

css属性 clip-path 属性使用裁剪方式创建元素的可显示区域。区域内的部分显示,区域外的隐藏。可以指定一些特定形状。 可以创建多边形内容显示区域polygon clip-path: polygon(0 0, 100% 0, 100% 75vh 0 100%); 顺序 1初始x y 为0 0 1向2位置 x轴移动100% y移…

SpringBoot集成elasticsearch使用(增删改查)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 SpringBoot集成elasticsearch使用(增删改查)一、es是什么?二、使用步骤1.搭配环境springboot集成es1、新建springboot项目,引入…

19_I.MX6ULL_SPI实验

目录 SPI简介 I.MX6U ECSPI简介 相关寄存器 ICM-20608简介 实验源码 SPI简介 同I2C一样,SPI是很常用的通信接口,也可以通过SPI来连接众多的传感器。相比I2C接口, SPI接口的通信速度很快, I2C最多400KHz,但是SPI可以到达几十MHz。I.MX6U也有4个SPI接口,可以通过这4个SPI接…

电感为什么会有饱和电流

电感有一个重要的参数那就是饱和电流,饱和电流的定义是当电感感值下降30%时流过电感的电流。 那么电感为什么会有饱和电流呢? 这个是电感磁芯的磁化曲线,横坐标是磁场强度H,纵坐标是磁感应强度B 在磁场强度较小的时候,…

大数据需要学哪些内容

大数据技术是当今互联网时代的热点之一,目前已经成为了各行各业中的最佳选择。随着物联网、人工智能、云计算等技术的发展,数据的规模不断增大,数据分析、数据挖掘、人工智能等应用也随之蓬勃发展,对大数据开发的需求越来越多。因…

智能网卡-提升网络性能的新选择

一、智能网口介绍 智能网卡(Smart NIC)是一种专用于网络数据处理的高性能网卡,采用了定制芯片、高速网络接口和强大的软件支持,可以为数据中心和企业网络提供更快、更安全、更可靠的网络连接和数据传输服务。 智能网卡的出现受到…

教你使用Apache搭建Http

Apache2默认采用的是80端口号,因此直接通过公网ip或域名就能访问。现实中,很多服务器本身就部署了许多其它服务,80端口号往往被占用,因此就需要将Apache2改成其它访问端口。 修改端口,首先需要修改/etc/apache2/ports…

数组排序详解

数组排序详解1、排序算法小结2、排序算法原理及实现2.1 归并排序2.2 快速排序2.3 冒泡排序2.4 插入排序2.5 选择排序2.6 希尔排序:1、排序算法小结 排序算法可以分为两大类: (1)非线性时间排序算法:通过比较来决定元素…

用Python实现批量翻译文档文件

文件名批量翻译需要用到编程语言和相应的翻译 API,下面以 Python 和 Google 翻译 API 为例,介绍具体的实现步骤: 安装必要的 Python 库 使用 Python 代码进行文件名翻译需要先安装两个库:googletrans 和 os。 pip install googl…

全网最全的Cookie, Session, Token鉴权详解,一定让你大饱眼福

目录 前言 一、Cookie鉴权 二、Session鉴权 ​编辑 三、Token鉴权 四、总结 前言 在Web开发中,鉴权是保护用户数据和系统安全的重要手段之一。常见的鉴权方式包括Cookie、Session和Token三种,下面我将详细介绍这三种鉴权方式,并且探讨它…

FMC子卡设计资料:ADRV9002双窄带宽带射频收发器 AD9361双收双发射频 DA子卡 ADRV9009双收双发射频FMC子卡

FMC550-基于ADRV9002双窄带宽带射频收发器FMC子卡 一、产品概述 ADRV9002 是一款高性能、高线性度、高动态范围收发器,旨在针对性能与功耗系统进行优化。该设备是可配置的,非常适合要求苛刻、低功耗、便携式和电池供电的设备。ADRV9002 的工作频率为…

基于典型相关分析的故障检测和过程监控算法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳座右铭&#…

分布式消息中间件概念

对于分布式消息中间件,首先要了解两个基础的概念,即什么是分布式系统,什么又是中间件。 分布式系统 “A distributed system is one in which components located at networked computers communicate and coordinate their actions only by …

Java 中常用的版本对应关系,springboot springcloud,cloud-alibaba

1.网址链接&官方文档链接 SpringCloud与SpringBoot的版本对应关系:https://start.spring.io/actuator/info SpringBoot版本列表:https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent SpringBoot最新GA版官方文档&#…

【计算机网络——制作双绞线】

文章目录实验目的:实验内容及过程记录(一)剪线(二)剥皮(三)排序(四)剪齐(五)插入(六)压制:(七)检测…

vscode debug Attach mode

Python Debug Mode: 常规debug。针对*.py python脚本启动的场景。 在使用vscode debug时,如果调试python脚本其实很简单。 .vscode/launch.json文件。 {"version": "0.2.0","configurations": [{"name": "Python: C…