计算机视觉全系列实战教程 (十三):图像形态学操作
1.基本概述
(1)What
图像的形态学操作的本质:集合间的运算 + 几何学
(2)Why(有什么用途)
消除噪声、边缘提取、区域填充、细化和粗化、分割独立的图像元素、求图像梯度、求极大值区域或极小值区域等。
(3)Which(有哪些常见的形态学操作)
A.膨胀
使得图像中“亮色”范围依据传入的结构元kernel扩张
B.腐蚀
使得图像中“暗色”范围依据传入的结构元kernel扩张
C.开运算
先腐蚀,后膨胀(移除小的“亮色”对象)
D.闭运算
先膨胀,后腐蚀(移除小的“暗色”对象)
E.顶帽运算
顶帽 = 原图 - 开运算的结果(分离得到一些“亮”区域)
F.黑帽运算
黑猫 = 闭运算 - 原图(分离得到一些“暗”区域)
G.击中与击不中
2. 如何进行形态学操作
(1)膨胀和腐蚀
这是形态学中最基本的两种操作,其它形态学操作都是基于这两种基本操作进行的。我这里称之为形态学的“基元操作”
step01:获取结构元
矩形(MORPH_RECT)、十字形(MORPH_CROSS)、椭圆形(MORPH_ELLIPSE)
//得到3阶矩阵,形状为矩形(值全为1)
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
//形状为十字形(十字形区域全为1,其它为0)
kernel = cv::getStructuringElement(cv::MORPH_CROSS, cv::Size(3,3));
step02:膨胀和腐蚀
方式一:erode和dilate
int iTms = 10; //腐蚀和膨胀的次数
cv::Mat imTmp01, imTmp02;
cv::dilate(imGray, imTmp01, kernel, cv::Point(-1, -1), iTms);
cv::erode(imGray, imTmp02, kernel, cv::Point(-1, -1), iTms);
方式二:morphologyEx(还可以进行其它形态学操作:开、闭、顶帽、黑帽等)
int iTms = 10; //腐蚀和膨胀的次数
cv::Mat imTmp03, imTmp04;
cv::morphologyEx(imGray, imTmp03, cv::MORPH_ERODE, kernel, cv::Point(-1, -1), iTms);
cv::morphologyEx(imGray, imTmp04, cv::MORPH_DILATE, kernel, cv::Point(-1, -1), iTms);
(2)开运算和闭运算
MORPH_OPEN、MORPH_CLOSE
int iTms = 10; //腐蚀和膨胀的次数
cv::Mat imTmp05, imTmp06;
cv::morphologyEx(imGray, imTmp05, cv::MORPH_OPEN, kernel, cv::Point(-1, -1), iTms);
cv::morphologyEx(imGray, imTmp06, cv::MORPH_CLOSE, kernel, cv::Point(-1, -1), iTms);
(3)顶帽和黑帽
int iTms = 10; //腐蚀和膨胀的次数
cv::Mat imTmp07, imTmp08;
cv::morphologyEx(imGray, imTmp07, cv::MORPH_TOPHAT, kernel, cv::Point(-1, -1), iTms);
cv::morphologyEx(imGray, imTmp08, cv::MORPH_BLACKHAT, kernel, cv::Point(-1, -1), iTms);
相关文章:
计算机视觉全系列实战教程 (十三):图像形态学操作
1.基本概述 (1)What 图像的形态学操作的本质:集合间的运算 几何学 (2)Why(有什么用途) 消除噪声、边缘提取、区域填充、细化和粗化、分割独立的图像元素、求图像梯度、求极大值区域或极小值区域等。 (3)Which(有哪些常见的形态学操作) A.膨胀 使得…...
python的 pyside2 安装
pip install pyside2 pip install pyqt5-tools pycharm 在pychar 的Main Menu--setings--tool--External-tools 点击 新增自定义工具 1)自定义 QtDesigner 目的:用于生成.ui文件Name :QtDesigner Group :Qt Program &a…...
R语言——数据与运算
练习基本运算: v <- c(2,4,6,9)t <- c(1,4,7,9)print(v>t)print(v < t)print(v t)print(v!t)print(v>t)print(v<t) v <- c(3,1,TRUE,23i)t <- c(4,1,FALSE,23i)print(v&t)print(v|t)print(!v)v <- c(3,0,TRUE,22i)t <- c(1,3,T…...
非强化学习的对齐方法
在文章《LLM对齐“3H原则”》和《深入理解RLHF技术》中,我们介绍了大语言模型与人类对齐的“3H原则”,以及基于人类反馈的强化学习方法(RLHF),本文将继续介绍另外一种非强化学习的对齐方法:直接偏好优化&am…...
写一个坏越的个人天地(三)
昨天卡巴卡巴还是投出了学习代码以来的第一份简历,遇到好的岗位还是想争取下的吧,虽然我觉得大概率还是gg了。 昨天完成了首页的上半部分 下半部分我的构思是左右栏,左侧为菜单栏,右侧为业务栏,左侧调整右侧router进行切换内容 可以用来展示js css的小demo 稍微调整下ro…...
【学习笔记】CSS
CSS 1、 基础篇 1.1、选择器 1.2、长度单位 1.3、CSS2 常用属性 1.4、盒模型 1.5、浮动 1.6、定位 position2、 CSS3 2.1、新增长度单位 2.2、新增颜色表示 2.3、新增选择器 2.4、新增盒子属性 2.5、新增背景属性 …...
与亚马逊云科技深度合作,再获WAPP、ISV认证
上半年,VERYCLOUD睿鸿股份加入亚马逊云科技的WAPP(Well-Architected Partner Programs)和ISV加速计划(ISV Accelerate Program),为客户带来更坚实优质的海外云服务。 Well-Architected 获得WAPP这项认证代表…...
idea 如何查看项目启动的端口号
方式一:查看Run/Debug Configurations: 打开IntelliJ IDEA,点击菜单栏的Run,然后选择Edit Configurations...,或者直接使用快捷键(通常是Shift Alt F10然后选择Edit Configurations)。 在打开的Run/Debug…...
年薪超过30万的网工,需要具备什么技能?
网工是一个各行各业都需要的职业,工作内容属性决定了它不会只在某一方面专精,需要掌握网络维护、设计、部署、运维、网络安全等技能。 那么,网络工程师的技术水平体现在哪些方面?今天就跟你唠唠这个。 01 先来测测你的网络设计能力…...
【杂记-浅谈OSPF协议中的邻居关系与邻接关系】
OSPF协议中的邻居关系与邻接关系 1、邻居关系2、邻接关系3、DR-other之间的邻居关系 在OSPF协议中,Neighbor relationship 邻居关系和Adjacency 邻接关系是两个核心概念,它们在路由器之间建立正确的路由信息传递机制方面起着关键作用。 1、邻居关系 邻…...
白银价格行情分析兼顾基本面和技术面
许多投资者在进行白银交易时都非常喜欢看技术指标和技术分析。他们浏览不同的网站,看各种各样的白银行情分析信息。网上的白银分析信息网站非常的多,讲解白银交易技巧的书籍也数不胜数,有翻译国外的,也有国人自己编写的。有的讲的…...
搜维尔科技推出绿幕抠屏虚拟制作演示项目
搜维尔科技推出绿幕抠屏虚拟制作演示项目 搜维尔科技推出绿幕抠屏虚拟制作演示项目...
大数据集群搭建基础:Linux下MySQL安装!!!
基于提供的MySQL安装包的安装步骤 前提:MariaDB已卸载 yum remove mariadb-libs安装mysql-community-common包 这个包含有MySQL社区版的公共文件和脚本,是安装其他组件的基础。 sudo rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm安装m…...
FLASH闪存
FLASH闪存 程序现象: 1、读写内部FLASH 这个代码的目的,就是利用内部flash程序存储器的剩余空间,来存储一些掉电不丢失的参数。所以这里的程序是按下K1变换一下测试数据,然后存储到内部FLASH,按下K2把所有参数清0&…...
GPT-5智能新纪元的曙光
在美国达特茅斯工程学院周四公布的采访中,OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布,给出了肯定答案并表示将在一年半后发布。穆拉蒂在采访中还把GPT-4到GPT-5的飞跃描述为高中生到博士生的成长。 这一爆炸性的消息,震动了整体…...
Qt | QPalette 类(调色版)
01、简介 1、需要用到 QWidget类中的如下属性 palette:QPalette 访问函数:const QPalette &palette() const; void setPalette(const QPalette&); 该属性描述了部件的调色板。在渲染标准部件时,窗口部件的样式会使用调色板,而且不同的平台或不同的样式通常具…...
Linux操作系统进程同步的几种方式及基本原理
1,进程同步的几种方式 1.1信号量 用于进程间传递信号的一个整数值。在信号量上只有三种操作可以进行:初始化,P操作和V操作,这三种操作都是原子操作。 P操作(递减操作)可以用于阻塞一个进程,V操作(增加操作)可以用于…...
android 责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。这种模式将这些对象连成一条链,并沿着这条链传递请求,直到有一…...
【可控图像生成系列论文(四)】IP-Adapter 具体是如何训练的?1公式篇
系列文章目录 【可控图像生成系列论文(一)】 简要介绍了 MimicBrush 的整体流程和方法;【可控图像生成系列论文(二)】 就MimicBrush 的具体模型结构、训练数据和纹理迁移进行了更详细的介绍。【可控图像生成系列论文&…...
堆的实现详解
目录 1. 堆的概念和特点2. 堆的实现2.1 堆向下调整算法2.2堆的创建2.3 建堆时间复杂度2.4 堆的插入2.5 堆的删除2.6 堆的代码实现2.6.1 结构体2.6.2 初始化2.6.3 销毁2.6.4 插入2.6.5 删除2.6.6 获取堆顶2.6.7 判空2.6.8 个数2.6.9 向上调整2.6.10 向下调整3. 堆的实现测试测试…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
