【OpenCV学习】第7课:形态学操作-膨胀与腐蚀

news2024/11/24 13:58:22

仅自学做笔记用,后续有错误会更改

理论

  1. 图像形态学操作-基于形状的一系列图像处理操作的合集, 主要是基于集合论基础上的形态学数学
  2. 形态学有4个基本操作:膨胀丶腐蚀丶开丶闭
  3. 膨胀与腐蚀是图像处理中最常用的形态学操作手段

形态学操作(morphology operators)-膨胀
跟前边的卷积操作类似, 但是膨胀的操作是在核内所有像素值, 取最大的那个来替换中心锚点的值, 并且核的形状可以是矩形丶圆等.
如下图:
在这里插入图片描述
核(红黄部分)的形状是矩形, 膨胀的意思就是核覆盖的9个小格子里边, 读取里面的像素值, 并比较大小, 取最大值, 然后替换中心锚点(红色小格子)的像素值

形态学操作(morphology operators)-腐蚀
腐蚀的操作与膨胀相反, 是取核覆盖范围内最小像素值来替换锚点值.

相关API
膨胀: dilate(src, dst, kernel);
腐蚀: erode(src, dst, kernel);

上边的kernel的形状可以由getStructuringElement(int shape, Size ksize, Point anchor)接口创建.
-shape: 指定核的形状(MORPH_RECT\MORPH_CROSS\MORPH_ELLIPSE)
-ksize: 大小
-anchor: 锚点,缺省值是Point(-1,-1),也就是中心

形态学操作常配合TrackBar一起使用, 就是给你一个可拖动的滑块, 滑块变动可更改核的大小, 然后图像的膨胀/腐蚀程度会进行相应变化, 下边给个膨胀的例子, 最上边的滑块就是TrackBar
在这里插入图片描述
在这里插入图片描述
TrackBar的创建:createTrackbar(const String& trackbarName, const String winName, int* value, int count, Trackbarcallback func, void* userdata=0)
-trackbarName: 滑块控件的名称
-winName: 窗口名称,这个控件显示在哪个窗口上
-value: 滑块初始值
-count: 滑块最大可拖动值
-func: 膨胀/腐蚀操纵的回调函数
-userdata: 这个参数是用户传递给回调函数的数据,用来处理滑块拖动事件。如果使用的第三个参数value是全局变量,完全可以不去管这个userdata参数

代码示例

Mat src,dst;
char OUTPUT_WIN[] = "output image";
int element_size = 3;
int max_size = 30;
void CallBack_Demo(int, void*);
int main(){
	src = imread(...);
	namedWindow(OUTPUT_WIN, CV_WINDOW_AUTOSIZE);
	createTrackbar("Element Size", OUTPUT_WIN, &element_size, max_size, CallBack_Demo);
	CallBack_Demo(0,0);
	waitKey(0);
	return 0;
}
CallBack_Demo(int ,void* ){
	int s = element_size*2 + 1;
	Mat structureElement = getStructuringElement(MORPH_RECT, Size(s,s), Point(-1,-1));
	// 膨胀
	// dilate(src, dst, stuctureElement, Point(-1,-1),1);
	// 腐蚀
	erode(src, dst, stuctureElement);
	imshow(OUTPUT_WIN, dst);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

行者AI解析内容审核平台中的图像检测技术原理

本文首发:行者AI谛听 近些年,监管部分对于平台的信息方面,越来越严格,继而有很多企业选择智能AI内容审核服务,帮助企业快速处理平台上一些违规内容。 很多人不懂这方面到底属于什么,今天行者AI就来为大家解…

【Python】python入门,这一篇就够了

快速入门/一文免挂Python程序元素变量python中的符号Python的程序结构分支结构异常处理循环结构Python函数python中的可变参数python中的全局变量和局部变量组合数据类型之序列类型序列通用操作字符串(str)字符串常用函数字符串类型的格式化列表&#xf…

Qt第三十一章:渐变QGradient

线性渐变:QLinearGradient class TestGradient(QWidget):def __init__(self, parentNone):super(TestGradient, self).__init__(parent)self.resize(300, 300)label QLabel(self)label.setGeometry(0, 0, 300, 300)"""线形渐变"""la…

802.11基础——术语及缩略语

目录 WiFi LAN(局域网) WAN(广域网) WLAN(Wireless LAN,即无线局域网) AP(Access point的简称,即访问点,接入点) Station(工作站…

HTML期末学生大作业 基于HTML+CSS+JavaScript通用的后台管理系统ui框架模板

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

[附源码]Python计算机毕业设计Django线上评分分享平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Docker安装MoogoDB, 进入容器, mongo shell操作mongoDB

安装MoogoDB, 进入容器, mongo shell操作mongoDB [Docker-Compose方式、普通方式] 文章目录安装MoogoDB, 进入容器, mongo shell操作mongoDB[Docker-Compose方式、普通方式]附件:单词本附件:什么是 . yml 后缀文件 ?[ 普通方式 ]1. 下载镜像:* 拓展&am…

职场中,如何让“讨厌的人”配合自己工作?

在职场上,我们总会遇到那么几个不愿意配合你工作的人,不仅不配合,甚至还喜欢扯皮,推卸责任,甩锅给自己的队友。然而,我们也不可能因为工作中出现了这样一个或几个人,就离职不干,或者…

ChatGPT-地表最强AI模型!要消灭人类?

大家好,我是贺同学,最近,美国人工智能研究机构 Openai 发布了最新的大语言模型 ChatGPT,惊艳的性能在海外掀起了一波又一波热潮。通过对各种领域专业知识的训练,ChatGPT 不仅可以帮助人们搜索知识,还能进行…

认证与授权之Cookie、Session、Token、JWT

Spring Security系列文章 认证与授权之Cookie、Session、Token、JWT 认证与授权 认证 进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需…

html静态网站基于动漫主题网站网页设计与实现共计10个页面——二次元漫画

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

有哪些电容笔值得推荐?十大电容笔知名品牌

虽然苹果的原装电容笔操作起来很顺手,性能很不错,但因为价格太高,所以让不少学生党都望而止步,而且重量也不小,用久了会手累。既然是来学习的,那就不一定要买这么昂贵的电容笔了。目前市场上的平替电容笔有…

中国书画院院士、著名画家——戴友

戴友 戴友 中国书画院院士、著名画家 广州美术学院国画系毕业的专业画家 师从著名国画大家关山月、黎雄才、方楚雄、周波 艺术简介 戴友,著名画家、中国书画院院士。1960年生于广东,江苏省溧阳市人,汉族。自幼自学绘画,1991年…

程序开发工具vim——vi的高级版本(记得收藏)

提示:在学习本文知识的时候记得温故一下文本编辑器vi的知识点:文本编辑器vi看这篇就够了因为目前大部分的Linux发行版都以vim替换vi的功能了,所以学习vi也很必要。 一.vim的缓存、恢复与打开时的警告信息 目前主要的文本编辑器都会有恢复的功…

一篇博客告诉你什么是时间复杂度和空间复杂度(没有基础也能看懂)(这是学习数据结构及算法所必须掌握的基础)

目录 0.前言 1.算法的复杂度简述 2.时间复杂度 2.1 什么是时间复杂度 2.2 大O表示法 2.2.1 例一 2.2.2 大O表示法规则 2.2.3 例二 2.2.4 例三 2.2.5 例四 2.2.6 例五 2.2.7 例六 2.2.8 例七 2.3 时间复杂度计算总结 3.空间复杂度 3.1 空间复杂度的量度 3.2 例一…

可行性研究

可行性研究可行性研究:分析和设计的压缩和简化,在高层抽象进行系统的分析和设计目的:最小代价在尽可能短的时间确定问题能否解决分析过程:可行性方面:步骤:系统流程图:用图形符号以黑盒形式描绘系统部件:表述数据流动情况数据流图:(DFD) 描绘信息和数据流的流动和处理逻辑画法:…

如何将C/C++代码转成webassembly(Linux环境)

如何将C/C代码转成webassembly_omage的博客-CSDN博客学习如何将C/C代码转成webassemblyhttps://blog.csdn.net/omage/article/details/128163526?spm1001.2014.3001.5501 上篇笔者分享了在window环境下如何将C/C代码编译成webassembly,当中用了非常简单的C代码…

避免踩坑的Github学生认证申请教程

避免踩坑的快速Github学生认证申请教程 直接上干货! 踩坑在于: 用了校卡以及在线验证报告无法通过Github学生认证, 需要用英文版的在线验证报告(网页版翻译就可以)的截图点击upload(无需拍照)&a…

【信息检索与数据挖掘期末复习】(五)Language Model

什么是语言模型? 一个传统的语言生成模型可以用于识别或生成字符串 我们可以将有穷自动机看作是一种确定性的语言模型 基本模型:每一个文档都是通过一个像这样的自动机生成的,只不过这种自动机是有概率的 一种最简单的语言模型等价于一个…

阿拉伯糖偶联核苷酸,UDP-b-L-arabinopyranose disodium salt,UDP-β-L-Ara.2Na

产品名称:阿拉伯糖偶联核苷酸 英文名称:UDP-b-L-arabinopyranose disodium salt,UDP-β-L-Ara.2Na CAS号:15839-78-8 分子式:C14H22N2O16P2 分子量:536.27600 纯度:98% 规格:1mg …