当前位置: 首页 > 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。当引用计数变为…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...