OpenCV(三十一):形态学操作
1.形态学操作
OpenCV 提供了丰富的函数来进行形态学操作,包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数:
-
腐蚀操作(Erosion):
erode(src, dst, kernel, anchor, iterations, borderType, borderValue)
该函数对输入图像中的前景区域进行腐蚀操作,通过用结构元素中的最小值替换区域中的像素值来收缩前景区域。 -
膨胀操作(Dilation):
dilate(src, dst, kernel, anchor, iterations, borderType, borderValue)
该函数对输入图像中的前景区域进行膨胀操作,通过用结构元素中的最大值替换区域中的像素值来扩展前景区域。 -
开运算(Opening):
morphologyEx(src, dst, MORPH_OPEN, kernel, anchor, iterations, borderType, borderValue)
开运算是先对图像进行腐蚀操作,然后再进行膨胀操作。这个操作可以去除小的噪声,并平滑图像的边界。 -
闭运算(Closing):
morphologyEx(src, dst, MORPH_CLOSE, kernel, anchor, iterations, borderType, borderValue)
闭运算是先对图像进行膨胀操作,然后再进行腐蚀操作。这个操作可以填充小的空洞,并平滑图像的边界。 -
梯度运算(Gradient):
morphologyEx(src, dst, MORPH_GRADIENT, kernel, anchor, iterations, borderType, borderValue)
梯度运算可以通过对输入图像的膨胀和腐蚀结果之差来突出显示边缘。 -
顶帽运算(Top Hat):
morphologyEx(src, dst, MORPH_TOPHAT, kernel, anchor, iterations, borderType, borderValue)
顶帽运算可以通过对输入图像和开运算结果之差来突出显示边缘和细节。 -
黑帽运算(Black Hat):
morphologyEx(src, dst, MORPH_BLACKHAT, kernel, anchor, iterations, borderType, borderValue)
黑帽运算可以通过对闭运算结果和输入图像之差来突出显示边缘和细节。
以上函数中,src
是输入图像,dst
是输出图像,kernel
是结构元素,anchor
是结构元素的锚点位置,iterations
是迭代次数,borderType
是边界像素处理方式,borderValue
是边界像素的值。
2.相关函数morphologyEx()
morphologyEx() 是 OpenCV 库中用于形态学操作的函数之一。它可以执行包括腐蚀、膨胀、开运算、闭运算等一系列形态学操作。该函数的原型如下:
void morphologyEx(
InputArray src,
OutputArray dst,
int op,
InputArray kernel,
Point anchor = Point(-1,-1),
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar& borderValue = morphologyDefaultBorderValue()
);
该函数的参数包括:
-
src:输入图像或图像数组。
-
dst:输出图像或图像数组。
-
op:指定形态学操作的类型。
-
kernel:结构元素(核)用于形态学操作。
-
anchor:结构元素中心的位置,默认为(-1, -1)表示结构元素的中心位置为核的中心。
-
iterations:执行形态学操作的迭代次数,默认为1。
-
borderType:边界像素处理方式,默认为BORDER_CONSTANT。
-
borderValue:当borderType为BORDER_CONSTANT时指定边界像素的值,默认为morphologyDefaultBorderValue()。
其中形态学操作的类型:
3.示例代码:
void image_morphologyEx(Mat image){Mat gray;cvtColor(image,gray,COLOR_BGR2GRAY);//灰度化threshold(gray,gray,80,255,THRESH_BINARY);//5×5矩阵结构元素Mat kernel= getStructuringElement(0,Size(5,5));Mat open,close,gradient,tophat,blackhat;//对图像进行开运算morphologyEx(gray,open,MORPH_OPEN,kernel);//对图像进行闭运算morphologyEx(gray,close,MORPH_CLOSE,kernel);//对图像进行梯度运算morphologyEx(gray,gradient,MORPH_GRADIENT,kernel);//对图像进行顶帽运算morphologyEx(gray,tophat,MORPH_TOPHAT,kernel);//对图像进行黑帽运算morphologyEx(gray,blackhat,MORPH_BLACKHAT,kernel);}
相关文章:

OpenCV(三十一):形态学操作
1.形态学操作 OpenCV 提供了丰富的函数来进行形态学操作,包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数: 腐蚀操作(Erosion): erode(src, dst, kernel, anchor, iteration…...
Python之面向对象(二)
目录 属性和方法静态属性/方法、普通属性/方法、类方法保护和私有属性/方法魔术方法构造方法(\_\_new__/\_\_init\_\_)析构方法(\_\_del__)调用方法(\_\_call__)toString方法\_\_str__、\_\_repr\_\_\_\_getitem__、setitem、delitem\_\_add__、\_\_gt\_…...

ESP32用作经典蓝牙串口透传模块与手机进行串口通信
ESP32用作经典蓝牙串口透传模块与手机进行串口通信 简介ESP32开发板Arduino程序手机与ESP32开发板进行蓝牙串口透传通信总结 简介 ESP32-WROOM-32模组集成了双模蓝牙包括传统蓝牙(BR/EDR)、低功耗蓝牙(BLE)和 Wi-Fi,具…...

Python 操作 CSV
使用过 CSV 文件都知道:如果我们的电脑中装了 WPS 或 Microsoft Office 的话,.csv 文件默认是被 Excel 打开的,那么什么是 CSV 文件?CSV 文件与 Excel 文件有什么区别?如何通过 Python 来操作 CSV 文件呢?带…...

自动化运维工具Ansible教程(二)【进阶篇】
文章目录 前言Ansible 入门到精通自动化运维工具Ansible教程(一)【入门篇】自动化运维工具Ansible教程(二)【进阶篇】精通篇 进阶篇1. Ansible 的高级主题(例如:角色、动态清单、变量管理等)**1. 角色(Roles)**&#x…...

嵌入式Linux基础学习笔记目录
1. 嵌入式Linux应用开发基础知识 1.1 交叉编译 1.2 GCC编译器 1.3 makefire 1.4 文件I/O 1.5 Framebuffer应用编程 1.6 文字显示及图象显示 1.7 输入系统应用编程 1.8 网络编程 1.9 多线程编程 1.10 串口编程 1.11 I2C应用编程 2. 源码分析 2.1 MQTT源码 2.2 蓝牙源码 2.3 MJP…...

JVM | 垃圾回收器(GC)- Java内存管理的守护者
引言 在编程世界中,有效的内存管理是至关重要的。这不仅确保了应用程序的稳定运行,还可以大大提高性能和响应速度。作为世界上最受欢迎的编程语言之一,通过Java虚拟机内部的垃圾回收器组件来自动管理内存,是成为之一的其中一项必…...

yolov5添加ECA注意力机制
ECA注意力机制简介 论文题目:ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 论文地址:here 基本原理 🐸 ECANet的核心思想是提出了一种不降维的局部跨通道交互策略,有效避免了降维对于通道注意…...
华为在高端智能手机市场再次撕开了一道深深的口子
智能手机市场趋于饱和,增长变得越来越难,智能手机厂商从被动卷走向了主动卷。 8月29日,华为宣布推出“HUAWEI Mate 60 Pro先锋计划”,并于当天中午在官方商城、部分线下门店上线销售新机Mate 60 Pro,它是全球首款支持卫…...
前端设计模式和设计原则之设计模式
作为前端开发,在code时,或多或少地都会践行设计模式,但是你清楚自己用到的是何种设计模式吗? 为什么前端开发一定要懂设计模式呢? code时不遵从设计模式,又能怎样呢? 上面的问题可以留作思考…...
提高在速卖通产品上的曝光率——自养号测评优势全面解析!
速卖通是国际贸易的一个平台,是国内外企业之间的一个桥梁。在速卖通中,如果要让产品得到更好地推广,就必须让产品得到更多的消费者认可。而产品的认可度除了品质保障和售后服务之外,评测也是非常重要的环节。 对于速卖通店铺销量…...

指针进阶(二)
指针进阶 5.函数指针6. 函数指针数组7. 指向函数指针数组的指针8. 回调函数案例:使用回调函数,模拟实现qsort(采用冒泡的方式)。案例:测试qsort排序结构体数据 5.函数指针 补: &函数名就是函数的地址 …...

【HCIE】03.BGP高级特性
每一条BGP路由都可以携带多个路径属性,针对其属性也有特有的路由匹配工具,包括:AS Path Filter和Community Filter。 import方向的属性,出现在如策略里面,加入到BGP路由表中,再传给路由表里,出去…...
单个处理数据祖籍列表层级关系
CREATE DEFINERroot% FUNCTION sys_organization_getAncestorsNames(deptId varchar(36)) RETURNS varchar(1000) CHARSET utf8DETERMINISTIC BEGINDECLARE parentDeptId varchar(36) default ; -- 父部门iddeclare parentDeptName varchar(100) default ; -- 父部门名称decla…...

Maven部署打包多环境(开发、测试、生产)配置教程
Maven打包多环境(开发、测试、生产)配置教程 1、多环境配置的必要性1.1 没有进行多环境配置进行的操作复杂性1.2 不影响运行时配置 2、配置方案2.1 添加profile属性2.1 添加两个插件2.3 主配置文件中添加插值变量 3、效果展示3.1 勾选prod环境3.2 控制台…...

【计算思维题】少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套
蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套 第十四届蓝桥杯省赛真题 1、要把下面4张图片重新排列成蜗牛的画像,该如何排列这些图片 A、 B、 C、 D、 答案:A 考点分析:主要考查小朋友们的观察能力空...

【Hello Algorithm】贪心算法
本篇博客介绍: 简单介绍下贪心算法 贪心算法 介绍贪心算法最小字典序的字符串拼接最多会议数切棍子的最小成本IPO灯塔问题 介绍贪心算法 贪心算法是一种极具有自然智慧的算法 它会使用以一种局部最功利的标准来做出一个当前看来最好的选择 如果说我们根据局部最优…...
TOP-K问题
目录 问题描述 解法及思想 第一种方式 算法思想 具体实现 第二种方式 算法思想 具体实现 问题描述 Top-K问题是一个十分经典的问题,一般有以下两种方式来描述问题: 在10亿的数字里,找出其中最大的100个数;在一个包含n个整…...

【保姆级从0到1】UE5 蓝图入门教程1:关卡、蓝图入门
20230113 1、新建项目 新建选择 UE 5.1 项目 选择蓝图,项目位置 改变编辑器布局,选择经典布局 2、关卡与蓝图 选择 File -> New Level 准备创建关卡 选择 Basic,点击 Create 进行创建 Ctrl S 保存新建的关卡 关卡蓝图的打开 鼠标右键&…...

【码银送书第六期】《ChatGPT原理与实战:大型语言模型的算法、技术和私有化》
写在前面 2022年11月30日,ChatGPT模型问世后,立刻在全球范围内掀起了轩然大波。无论AI从业者还是非从业者,都在热议ChatGPT极具冲击力的交互体验和惊人的生成内容。这使得广大群众重新认识到人工智能的潜力和价值。对于AI从业者来说…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...