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

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

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

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...