当前位置: 首页 > news >正文

wordpress建站文本教程/seo知识总结

wordpress建站文本教程,seo知识总结,二手车网站建设,网站手机微信三合一怎么做1.目标 在本教程中: 我们将学习不同的形态操作,如腐蚀、膨胀、开、闭等。我们将看到不同的函数,如: cv.erode()**、 **cv.dilate()**、 **cv.morphologyEx() 等。 理论: 图像的形态转换是图像处理中的一个重要领域…

1.目标

在本教程中:

  • 我们将学习不同的形态操作,如腐蚀、膨胀、开、闭等。
  • 我们将看到不同的函数,如: cv.erode()**、 **cv.dilate()**、 **cv.morphologyEx() 等。

理论:

图像的形态转换是图像处理中的一个重要领域,它基于数学形态学(Mathematical Morphology)的原理。数学形态学是一种基于集合论和积分几何的非线性图像处理方法,主要用于提取图像中的形状特征、滤波、图像分割、特征提取等。形态学变换是基于图像形状的一些简单操作。它通常在二值图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定操作性质的结构元素或内核。形态转换通常涉及基本的操作,如腐蚀(Erosion)、膨胀(Dilation)、开运算(Opening)、闭运算(Closing)等,以及这些基本操作的组合。

2.腐蚀

腐蚀的基本概念就像土壤侵蚀一样,只侵蚀前景对象的边界(总是尽量保持前景为白色)。那它有什么作用呢?内核在图像中滑动(如二维卷积)。只有当内核下的所有像素都为 1 时,原始图像中的像素(1 或 0)才会被视为 1,否则会被侵蚀(变为零)。

所以根据内核的大小,边界附近的所有像素都将被丢弃。因此,前景对象的厚度或大小在图像中减少或只是白色区域减少。它有助于消除小的白色噪音(如我们在“颜色空间”一章中所看到的),分离两个连接的对象等。

作为一个例子,我将使用一个 5x5 内核,内核元素均为1。让我们看看它是如何工作的:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread(r'D:\study\EmotionDetection_RealTime-master\data\data\te\07.jpg')
# blur = cv.blur(img,(5,5))
kernel = np.ones((5, 5), np.uint8)eroded_image = cv.erode(img, kernel, iterations=1)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(eroded_image),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

腐蚀的基本概念就像土壤侵蚀一样,只侵蚀前景对象的边界(总是尽量保持前景为白色) 

 

 腐蚀的基本概念就像土壤侵蚀一样,只侵蚀前景对象的边界,对于黑色部分来说就是进行膨胀操作。

 

左侧是原始的清晰图像,右侧则是应用了图像腐蚀技术后的效果,您可以看到细节部分变得模糊,边缘减少了,对比度也有所降低 

3. 膨胀 

它与腐蚀正好相反。这里,如果内核下至少有一个像素为“1”,则像素元素为“1”。所以它会增加图像中的白色区域,或者增加前景对象的大小。通常情况下,在去除噪音的情况下,腐蚀后会膨胀。因为,腐蚀消除了白噪声,但它也缩小了我们的对象。所以我们扩大它。由于噪音消失了,它们不会再回来,但我们的目标区域会增加到腐蚀之前的状态。它还可用于连接对象的断开部分。

dilation = cv.dilate(img,kernel,iterations = 1)

 通常用于增加图像中的明亮区域或填充图像中的孔洞

可以明显感觉到,画面变亮了。

4.开运算

开运算是图像处理中的一种形态学操作,它首先对图像进行腐蚀,然后进行膨胀。这种操作通常用于去除图像中的噪声和小的明亮区域,同时保持图像的大致形状和结构不变。

开只是腐蚀的另一个名称,随后是膨胀。正如我们上面所解释的,它对消除噪音很有用。在这里,我们使用 **cv.morphologyEx()**。

opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)

将图像放大一点看,可以看到第二张加入高斯噪声后,通过开运算去除了这些噪声,并将图像前景进行膨胀。

笔者认为,这些噪声由于是散乱分布的,再进行二值化时部分被划为前景,部分被划为背景,但无论是前景还是背景,它们都是孤立的,第一步的腐蚀会去除哪些孤立的前景噪声,第二部 

 

这个是先进行腐蚀再进行膨胀的效果图,腐蚀除了将背景的噪声去除外,一些背景中的纹理也在一定程度的隐去了,而膨胀可以将这些纹理再现出来,甚至比原图还要强。 

5.闭运算

闭运算是图像处理中的一种形态学操作,它首先对图像进行膨胀,然后进行腐蚀。这种操作通常用于填充图像中的暗色区域和孔洞,同时保持图像的大致形状和结构不变。

 关闭与打开相反,膨胀后腐蚀。它在填充前景对象内的小孔或对象上的小黑点时很有用。

closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)

kernel  = (5,5) 

 

 kernel  = (10,10) 

 kernel  = (15,15)  

 

 可以看到,用来进行闭运算的核越大,消除黑色小块的能力越强,不过当核过于大的时候,就是前景与背景的分界变得模糊。

先膨胀后腐蚀 

kernel  = (5,5)  

 

kernel  = (10,10)   

 

kernel  = (15,15)   

 

可以看到,在使用的核相同的情况下,先膨胀后腐蚀,跟闭运算的结果不一样 。

先留着这个问题。

6.形态梯度 

它是图像的膨胀和腐蚀之间的差值。结果将类似于对象的轮廓。、

形态梯度是图像处理中的一种形态学操作,它用于强调图像中的边缘和细节。形态梯度的计算方法是先对图像进行膨胀,然后从膨胀后的图像中减去原始图像。这个操作的结果是一幅图像,其中只包含了原始图像中边缘和显著变化的部分。

形态梯度的计算可以用以下公式表示:

形态梯度(G)=膨胀(f)−腐蚀(f)

其中,f 是原始图像,膨胀(f) 和 腐蚀(f) 分别是图像的膨胀和腐蚀结果。

形态梯度操作可以用于图像分割、特征提取和边缘检测等任务。它对于突出图像中的线状结构和物体的轮廓非常有用。

gradient = cv.morphologyEx(img, cv.MORPH_GRADIENT, kernel)

 

7.顶帽 

它是原图像和原图像开运算结果的差值。

顶帽(Top Hat)变换是图像处理中的一种形态学操作,它用于突出图像中的明亮区域,同时抑制背景。顶帽变换的计算方法是先对图像进行开运算(即先腐蚀后膨胀),然后从原始图像中减去开运算的结果。这个操作的结果是一幅图像,其中只包含了原始图像中比周围区域亮的部分。

顶帽变换的公式可以表示为:

顶帽变换(T)=原始图像(f)−开运算(f)

其中,f 是原始图像,开运算(f) 是图像的开运算结果。

顶帽变换对于提取图像中的小而亮的细节非常有用,这些细节可能在图像的背景或较大物体的遮挡下不明显。

tophat = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel)

8.黑帽 

黑帽

黑帽(Black Hat)变换是图像处理中的一种形态学操作,它用于突出图像中的暗色区域,同时抑制明亮区域。黑帽变换的计算方法是先对图像进行闭运算(即先膨胀后腐蚀),然后从闭运算的结果中减去原始图像。这个操作的结果是一幅图像,其中只包含了原始图像中比周围区域暗的部分。

黑帽变换的公式可以表示为:

黑帽变换(B)=闭运算(f)−原始图像(f)

其中,f 是原始图像,闭运算(f) 是图像的闭运算结果。

黑帽变换对于提取图像中的小而暗的细节非常有用,这些细节可能在图像的明亮区域或较大物体的遮挡下不明显。

它是原图像和原图像的闭的差值。

blackhat = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel)

 

9.结构元素 

在前面的例子中,我们在 numpy 的帮助下手工创建了一个结构参量。它是长方形的。但在某些情况下,您可能需要椭圆/圆形的内核。因此,opencv 有一个函数,**cv.getStructuringElement()**。只要传递内核的形状和大小,就可以得到所需的内核。

 

# Rectangular Kernel
>>> cv.getStructuringElement(cv.MORPH_RECT,(5,5))
array([[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]], dtype=uint8)
# Elliptical Kernel
>>> cv.getStructuringElement(cv.MORPH_ELLIPSE,(5,5))
array([[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]], dtype=uint8)
# Cross-shaped Kernel
>>> cv.getStructuringElement(cv.MORPH_CROSS,(5,5))
array([[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]], dtype=uint8)

相关文章:

OpenCV学习(4.5) 图像的形态转换

1.目标 在本教程中: 我们将学习不同的形态操作,如腐蚀、膨胀、开、闭等。我们将看到不同的函数,如: cv.erode()**、 **cv.dilate()**、 **cv.morphologyEx() 等。 理论: 图像的形态转换是图像处理中的一个重要领域…...

MFC设置窗口在Z轴上的位置

函数原型: BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags);返回值: 如果函数成功,则返回非零值;否则返回0。 参数: pWndInsertAfter:标识了在Z轴次…...

STM32项目分享:智能门禁锁系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板及元器件图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…...

PostgreSQL中有没有类似Oracle的dba_objects系统视图

PostgreSQL中有没有类似Oracle的dba_objects系统视图 在PostgreSQL中,没有一个完全集成了所有对象信息的视图(类似于Oracle中的DBA_OBJECTS)。但是,PostgreSQL提供了一些系统目录表和视图,可以用来获取数据库对象的信…...

【kubernetes】探索k8s集群的配置资源(secret和configma)

目录 一、Secret 1.1Secret 有四种类型 1.2Pod 有 3 种方式来使用 secret 1.3应用场景:凭据 1.4创建 Secret 1.4.1用kubectl create secret命令创建Secret 1.4.2内容用 base64 编码,创建Secret 1.4.2.1Base64编码 1.4.2.2创建YAML文件 1.4.2.3…...

基于springboot实现社区养老服务系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现社区养老服务系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生,其可以帮助…...

用linux 1分钟部署一台文件上传/下载的http/https服务器

安装包官网:GitHub - codeskyblue/gohttpserver: The best HTTP Static File Server, write with golangvue 1、官网下载或本文章的资源链接下载gohttpserver; 2、将gohttpserver、cacert.pem、cakey.pem三个文件放在linux一个目录下 启动gohttpserver服…...

机器学习ML.NET

适用于 .NET 的机器学习 ML.NET 是用于 .NET 的跨平台开源机器学习 (ML) 框架。 ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据库加载…...

爬取基金收盘价并用pyecharts进行展现

爬取基金收盘价并用pyecharts进行展现 一、用到的第三方包 因为使用到了一些第三方的包,包还是比较大的如果直接从社区下载比较费劲,所以建议配置国内镜像源,这里以清华的镜像源为例。 pip config set global.index-url https://pypi.tuna…...

各平台对象存储

一、阿里云对象存储 官方文档:https://help.aliyun.com/zh/oss/getting-started/getting-started-with-oss?spma2c4g.11186623.0.0.299a646c6nWWcW 1.引入maven 官网:https://help.aliyun.com/zh/oss/developer-reference/java-installation?spma2c…...

C# 中提取方法进行重构

文章目录 1、什么是提取方法重构技术?2、提取方法重构 C# 代码示例3、提取方法重构技术的好处4、提取方法重构有用的场景5、总结 C# 中的提取方法重构技术 1、什么是提取方法重构技术? 重构代码是软件工程师的一项重要技能,因为它有助于提高…...

每天一个数据分析题(三百四十三)

同环比是帮助阅读者了解维度项表现水平有没有随着时间的推移而得以增长提升,以下对于同环比的说法正确的是? A. 同环比计算方法一般适用于对长周期业务行为结果的观测 B. 若产品具备季节属性特征,则应优先使用同比计算方法 C. 上期值一般指…...

【leetcode--统计优美子数组】

解题思路 一、滑动窗口 不断右移 right 指针来扩大滑动窗口,使其包含 k 个奇数; 若当前滑动窗口包含了 k 个奇数,则如下「计算当前窗口的优美子数组个数」: 统计第 1 个奇数左边的偶数个数 leftEvenCnt。 这 leftEvenCnt 个偶数…...

开源模型应用落地-LangChain高阶-LCEL-表达式语言(二)

一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么? LCEL是一种非常灵活和强大的语言,可以帮助您更…...

shell脚本对编码和行尾符敏感吗

问题 我正在 macOS 上制作一个 NW.js 应用程序,并想通过双击图标在开发模式下运行该应用程序。在第一步中,我试图使我的 shell 脚本正常工作。 在 Windows 上使用 VS Code,我在项目的根目录下创建了一个 run-nw 文件,包含以下内…...

神经网络----现有网络的下载和使用(vgg16)

以下两种方法已经用不了 vgg16_false torchvision.models.vgg16(pretrainedFalse) vgg16_true torchvision.models.vgg16(pretrainedTrue) 改为 vgg16_model0 vgg16(weightsNone) #vgg16_false vgg16_model1 vgg16(weightsVGG16_Weights.DEFAULT) # pretrained vgg16_…...

Java 异常处理 - 自定义异常

在Java中,自定义异常是一种创建新异常类的方式,这些异常类继承自Throwable类或其子类Exception(或RuntimeException,如果它是运行时异常的话)。自定义异常通常用于描述特定于应用程序的错误情况,以便为调用…...

Excel 交叉表的格转成列,行转成格

Excel里交叉表的左表头是卡车号,上表头是工作,交叉格是工作编号。 ABCD1Truck NumberJob1Job2Job3271592859285928372395859282971473297159282971 要求:将交叉格转为列,左表头转为格。 ABC1297139585928272727137371473715726…...

【C++软件调试技术】什么是pdb文件?如何使用pdb文件?哪些工具需要使用pdb文件?

目录 1、什么是pdb文件? 2、如何配置生成pdb文件? 3、pdb文件的时间戳和文件名称 3.1、pdb文件的时间戳 3.2、pdb文件的文件名称 4、有pdb文件才能在Visual Studio中调试代码 5、在Windbg中使用pdb文件 5.1、使用lm命令查看二进制文件的时间戳,去查找对应版本的pdb文…...

如何搭建一台永久运行的个人服务器?

一、前言 由于本人在这段时候,看到了一个叫做树莓派的东东,初步了解之后觉得很有意思,于是想把整个过程记录下来。 二、树莓派是什么? Raspberry Pi(中文名为树莓派,简写为RPi,(或者RasPi / RPI) 是为学习计算机编程…...

Ant Design+react 表单只读

表单禁用,样式不好看,不符合甲方标准,看了一下文档,select、radio等都不支持只读状态。 解决方法: 利用css3的point-events属性,设置为none 在查看弹窗时,传入一个变量,当变量为true…...

推荐系统三十六式学习笔记:原理篇.近邻推荐07|人以群分,你是什么人就看到什么世界

目录 协同过滤基于用户的协同过滤背后的思想原理实践1、构造矩阵2、相似度计算3、推荐计算4、一些改进 应用场景:总结 谈及推荐系统,不得不说大名鼎鼎的协同过滤。协同过滤的重点在于协同,所谓协同,也就是群体互帮互助&#xff0c…...

要改进单例模式的实现以确保线程安全并优化性能,有几种常见的方法

要改进单例模式的实现以确保线程安全并优化性能,有几种常见的方法。以下是几种改进 ThreadUtil 单例实现的方法: ### 1. 懒汉式(线程安全版) 使用同步机制来确保线程安全,但只在第一次创建实例时同步,这样…...

k8s——Pod容器中的存储方式及PV、PVC

一、Pod容器中的存储方式 需要存储方式前提:容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。 首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态&…...

Java/Golang:活用interface,增加程序扩展性

场景 在paas中间件众多的场景下,做一款用于巡检多个paas组件健康状态的工具。工具的编写需要具备一定的扩展性,便于后续新增某个paas组件巡检的功能。 管理多个paas组件,需要方便扩展新增。 思路 使用面向对象编程思想,首先对…...

SQL语句练习每日5题(四)

题目1——查找GPA最高值 想要知道复旦大学学生gpa最高值是多少,请你取出相应数据 题解: 1、使用MAX select MAX(gpa) FROM user_profile WHERE university 复旦大学 2、使用降序排序组合limit select gpa FROM user_profile WHERE university 复…...

Java排序算法汇总篇,八种排序算法

排序算法汇总: Java排序算法(一):冒泡排序 Java排序算法(二):选择排序 Java排序算法(三):插入排序 Java排序算法(四):快速排序 Java排序算法(五):归并排序 Java排序算法(六):希尔排序 Java排序算法(…...

R语言探索与分析20-北京市气温预测分析

一、序言 近年来,人类大量燃烧煤炭、天然气等含碳燃料导致温室气 体过度排放,大量温室气体强烈吸收地面辐射中的红外线,造 成温室效应不断累积,使得地球温度上升,造成全球气候变暖。气象温度的预测一直以来都是天气预…...

2024年安全现状报告

2024 年安全现状报告有些矛盾。尽管安全专业人员的道路困难重重,比如说严格的合规要求、不断升级的地缘政治紧张局势和更复杂的威胁环境,但整个行业还是在取得进展。 许多组织表示,与前几年相比,网络安全变得更容易管理。组织之间…...

OV通配符ssl证书是什么

通配符https证书的产品比较丰富,为了方便区分,可以按照验证方式将通配符https证书分为DV基础型通配符https证书和OV企业型通配符https证书两种。其中OV通配符https证书申请条件高,审核也比较严格,相比于DV基础型通配符https证书&a…...