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

OpenCV形态学

什么事形态学处理
基于图像形态进行处理的一些基本方法;
这些处理方法基本是对二进制图像进行处理;
卷积核决定着图像出来后的效果。

一 图像二值化

什么是二值化
将图像的每个像素变成两种值,如0,255.

全局二值化。

局部二值化。

threshold API

threshold(img,thresh,maxVal,type)
img:图像,最好是灰度图
thresh:阈值
maxVal:超过阈值,替换成maxVal
THRESH_BINARY和THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO和THRESH_TOZERO_INV
import cv2import numpy as npimg=cv2.imread('./2037551.jpg')img1=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)ret,dst=cv2.threshold(img,180,255,cv2.THRESH_BINARY)cv2.imshow('img',img)
cv2.imshow('gray',img1)
#cv2.imshow('bin',bin)cv2.waitKey(0)

二 阈值类型

thresholdType
在这里插入图片描述

三 自适应阈值

由于光照不均匀以及阴影的存在,只有一个阈值会使得在阴影处的白色被二值化成黑色。

adaptiveThresholdAPI

adaptiveThreshold(img,maxVal,adaptiveMethod,type,blockSie,C)
adaptiveMethod:计算阈值的方法
blockSize:邻近区域的大小
C:常量,应从计算出的平均值或加权平均值中减去;
adaptiveMethod
计算阈值的方法
ADAPTIVE_THRESH_MEAN_C:计算领近区域的平均值
ADAPIVE_THRESH_GAUSSIAN_C:高斯窗口加权平均值
Type:THRESH_BINARY,THRESH_BINARY_INV
import cv2
import numpy as npimg=cv2.imread('./2037551.jpg')
img1=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)dst=cv2.adaptiveThreshold(img1,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,11,0)print(dst.shape)cv2.imshow('img',img)
cv2.imshow('img1',img)
cv2.imshow('dst',dst)cv2.waitKey(0)

四 腐蚀

在这里插入图片描述

1 腐蚀运算在这里插入图片描述

2 腐蚀效果

在这里插入图片描述

3 腐蚀API

erode(img,kernel,iterations=1)
import cv2
import numpy as npimg=cv2.imread('./2037551.jpg')kernel=np.ones((3,3),np.uint8)dst=cv2.erode(img,kernel,iterations=1)cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey(0)

六 获取形态学卷积核

卷积核的类型

getStructuringElement(type,size)
Size值为:3:3)、(5,5...
MORPH_RECT
MORPH_ELLIPSE
MORPH_CROSS

七 OPenCV 膨胀

膨胀运算
在这里插入图片描述

1 膨胀效果

在这里插入图片描述

2 膨胀API

dilate(img,kernel,iterations=1)

问题
如果是白底黑字,进行腐蚀与膨胀后会怎样?
卷积核是否可以设置为全0?

八 开运算

开运算=腐蚀+膨胀

开运算效果
在这里插入图片描述
开运算API

morphologyEx(img,EORPH_OPEN,kernel)
import cv2
import numpy as npimg=cv2.imread('./2037551.jpg')kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(7,7))#dst=cv2.erode(img,kernel,iterations=1)#膨胀
#dst1=cv2.dilate(img,kernel,iterations=1)dst1=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
#cv2.imshow('dst',dst)
cv2.imshow('dst1',dst1)
cv2.waitKey(0)

九 闭运算

闭运算效果
在这里插入图片描述
闭运算API

morphology(img,MORPH_CLOSE,kernel)

十 形态学剃度

梯度=原图-腐蚀

梯度效果图

梯度API

morphologyEx(img,MORPH_GRADIENT,kernel)
import cv2
import numpy as npimg=cv2.imread('./2037551.jpg')kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(7,7))#梯度
dst1=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)cv2.imshow('img',img)
cv2.imshow('dst',dst1)
cv2.waitKey(0)

十一 顶帽运算

顶帽=原图-开运算

顶帽效果图
在这里插入图片描述
顶帽API

morphologyEx(img,MORPH_TOPHAT,kernel)
import cv2
import numpy as npimg=cv2.imread('./2037551.jpg')kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(19,19))#顶帽
dst1=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)cv2.imshow('img',img)
cv2.imshow('dst',dst1)
cv2.waitKey(0)

十二 黑帽运算

黑帽=原图-闭运算

黑帽效果图
在这里插入图片描述
黑帽API

morphologyEx(img,MORPH_BLACKHAT,kernel)
import cv2
import numpy as npimg=cv2.imread('./2037551.jpg')kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(19,19))#顶帽
dst1=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)cv2.imshow('img',img)
cv2.imshow('dst',dst1)
cv2.waitKey(0)

相关文章:

OpenCV形态学

什么事形态学处理 基于图像形态进行处理的一些基本方法; 这些处理方法基本是对二进制图像进行处理; 卷积核决定着图像出来后的效果。 一 图像二值化 什么是二值化 将图像的每个像素变成两种值,如0,255. 全局二值化。 局部二值化。 thres…...

首途第三十三套清新简约卡片风格蓝紫渐变色短视频模板 | 苹果CMSV10主题

下载地址:首途第三十三套清新简约卡片风格蓝紫渐变色短视频模板 | 苹果CMSV10主题 首途第三十三套清新简约卡片风格蓝紫渐变色短视频模板 | 苹果CMSV10主题 我们的简约风格,以纯洁的白色和深邃的紫色为主色调,为您提供了一种清新、时尚的浏览…...

永磁同步直线电机(PMLSM)控制与仿真2-永磁同步直线电机数学模型搭建

文章目录 1、公式总结2、电压方程模型3、运动方程4、推力方程5、转化关系 写在前面:原本为一篇文章写完了永磁同步直线电机数学模型介绍,永磁同步直线电机数学模型搭建,以及永磁同步直线电机三环参数整定及三环仿真模型搭建,但因为…...

MPLS VPN一

R1为客户,现在进行一些基本配置,来确保可以通路由 先启动OSPF跑通 在R3上 等一会 现在启动MPLS 对R3 对R4 然后在R2上 再把接口划到空间里面 原来的IP在公网里面,被清除了 然后再配置接口 查看 对R1(相当于客户) …...

39python数据分析numpy基础之h5py读写数组数据到h5文件

1 python数据分析numpy基础之h5py读写数组数据到h5文件 HDF5(分层数据格式文件)是Hierarchical Data Format Version 5的缩写,是一种用于存储和管理大数据的文件格式。经历了20多年的发展,HDF格式的最新版本是HDF5,它包含了数据模型&#xf…...

2024全新仿麻豆视频苹果cms源码v10影视模板

下载地址:2024全新仿麻豆视频苹果cms源码v10影视模板 高端大气的设计,适合做电影、连续剧、综艺、动漫、微电影、纪录片、海外剧等视频网站...

这世上又多了一只爬虫(spiderflow)

让我们一起默念: 爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫爬虫 接着大声喊出来: 一!只!爬!虫!呀!爬!呀!爬&#xf…...

SpringMVC框架学习笔记(七):处理 json 和 HttpMessageConverter 以及文件的下载和上传

1 处理 JSON-ResponseBody 说明: 项目开发中,我们往往需要服务器返回的数据格式是按照 json 来返回的 下面通过一个案例来演示SpringMVC 是如何处理的 (1) 在web/WEB-INF/lib 目录下引入处理 json 需要的 jar 包,注意 spring5.x…...

八、BGP

目录 一、为何需要BGP? 二、BGP 2.1、BGP邻居 2.2、BGP报文 2.3、BGP路由 2.4、BGP通告遵循原则 2.5、BGP实验 第一步:建立邻居 第二步:引入路由 BGP路由黑洞 路由黑洞解决方案 1、IBGP全互联 2、路由引入 3、MPLS 多协…...

有监督学习——支持向量机、朴素贝叶斯分类

1. 支持向量机 支持向量机(Support Vector Machine, SVM)最初被用来解决线性问题,加入核函数后能够解决非线性问题。主要优点是能适应小样本数量 高维度特征的数据集,甚至是特征维度数高于训练样本数的情况。 先介绍几个概念&am…...

自动化测试文档

自动化测试文档的类型 自动化测试方案: 目的:描述自动化测试的目标、范围、方法、资源等。内容:通常包含测试计划、测试用例设计、测试环境配置、测试执行策略、预期结果、风险评估等。自动化测试脚本: 目的:用于执行…...

vue-i18n使用步骤详解(含完整操作步骤)

开篇 下面是从创建vue项目开始,完整使用i18n实现国际化功能的步骤,希望对您有所帮助。 完整步骤 创建项目 创建项目,并在创建项目的时候选择vuex,router 选择3.x版本 后面随意选即可,下面是完整的代码结构 安装vue-i18n,并封装…...

XXE漏洞修补:保护您的系统免受XML外部实体攻击

引言 XML外部实体(XXE)漏洞是一种常见的网络安全问题,它允许攻击者通过XML文档中的实体引用读取服务器上的文件或发起远程服务器请求。这种漏洞可能被用于数据泄露、拒绝服务攻击(DoS)甚至远程代码执行。本文将探讨XX…...

去除upload的抖动效果

title: 去除upload的抖动效果 date: 2024-06-15 20:16:51 tags: vue3 在使用vue3element-plus框架的时候,常常会使用到el-upload方法。其中如果做了翻页效果可以发现图片过度方式是集中到左上角进行的翻页,这种效果不是很好,我们还是想让这中…...

什么是 Linux ?(Linux)

系列文章目录 第一章 什么是Linux? 文章目录 系列文章目录一、什么是 Linux ?二、Linux 的发行版本总结 一、什么是 Linux ? Linux(Linux Is Not UniX),是一种免费使用和自由传播的类UNIX操作系统&#x…...

uni-app 怎么在tabbar使用阿里图标库

提示:微信小图标不支持使用字体图标的方式,只能下载png 方法一:直接下载png图片 我们首选打开阿里矢量图标库 链接在下方 👇 iconfont-阿里巴巴矢量图标库iconfont-国内功能很强大且图标内容很丰富的矢量图标库,提供矢…...

勒索病毒剖析

2016年不自己勒索了 卖病毒 让别人勒索 傻瓜式勒索 黑客用的是非对称加密 全世界只有黑客有那把私钥 反向解密不了 传统爆破容易被检测,黑客慢速爆破,利用超级多的僵尸进行试错,慢慢试出来账号密码 因为一般运维设备在防火墙的白名单里&…...

【C++11】第一部分(一万六千多字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 C11简介 统一的列表初始化 {}初始化 std::initializer_list 声明 auto decltype 右值引用和移动语义 左值引用和右值引用 左值引…...

FPGA专项课程即将开课,颁发AMD官方证书

社区成立以来,一直致力于为广大工程师提供优质的技术培训和资源,得到了众多用户的喜爱与支持。为了满足用户需求,我们特别推出了“基于Vitis HLS的高层次综合及图像处理开发”课程。 本次课程旨在帮助企业工程师掌握前沿的FPGA技术&#xff…...

C++ shared_ptr

shared_ptr共享它指向的对象,多个shared_ptr可以指向(关联)相同的对象,在内部采用计数机制来实现。 当新的shared_ptr与对象关联时,引用计数增加1。 当shared_ptr超出作用域时,引用计数减1。当引用计数变为…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…...

【AI学习】三、AI算法中的向量

在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...