opencv图像腐蚀

腐蚀(Erosion)是一种形态学图像处理操作,用于移除图像中的小白点、细小物体或者边缘。它通过将结构元素应用于图像上的像素来实现。
以下是opencv实现图像腐蚀的代码

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main() {Mat srcImage = imread("3.png");imshow("原图", srcImage);waitKey(0);return 0;
}

我们先显示一下原始图片。
1 为啥#include的时候要包含这么长的头文件,直接包含这个hpp不好吗?
因为这样做首先可以实现选择性地包含文件,其次可以防止额外相同的文件被包含。
2 highgui模块就是图像的一些高级图像界面模块你看它后缀名gui。imgproc模块是图像处理模块。

然后是腐蚀的过程,下面先是代码

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main() {Mat srcImage = imread("3.png");imshow("原图", srcImage);Mat element = getStructuringElement(MORPH_RECT, Size(30, 30));Mat dstImage;erode(srcImage, dstImage, element);imshow("腐蚀图", dstImage);waitKey(0);return 0;
}

1 getStructuringElement用来获取结构元素的函数,结构元素就像是一种小小的形状模板,用于在图像处理中执行各种操作。比如,可以想象成一个小小的图案,比如一个小方块、圆圈或者十字形。这个小形状可以被放置在图像上,然后根据它的形状和大小,来改变图像中的像素值。
2 erode常见的参数就是输入,输出,结构元素。
这个是效果图我设置Size(30,30)的时候

3 可以试试改变结构元素的形状

Mat element = getStructuringElement(MORPH_ELLIPSE, Size(1, 1));

在这里插入图片描述
Size(10,30)的时候
在这里插入图片描述
Size(1,1)的时候
在这里插入图片描述
可以看出结构元素越大腐蚀的效果就越明显。
我们还可以实现迭代次数的增加,这样图像的边缘更加紧凑(为啥感觉没毛变化)

	erode(srcImage, dstImage, element,cv::Point(-1,-1),13,0);

在这里插入图片描述

对了,我简单说一下腐蚀的原理
这个涉及的语言讲不好讲还不如看视频,博客,以下的都不错
参考资料:
https://www.bilibili.com/video/BV1NF411w7fM/?spm_id_from=333.337.search-card.all.click
https://zhuanlan.zhihu.com/p/433688663

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

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

相关文章

【Android 需求方案实现】 在屏幕上画一条线的时候,如何把这条线经过的所有坐标点(高效有序完整)地发送出去?

文章目录 需求背景定义接口,获取down和move事件获取到的坐标信息获取触摸事件MotionEvent对拿到的x、y坐标进行处理发送实时坐标点算法实现:把虚线通过补偿算法填充为实线完成需求背景 买东西付款的时候,或者银行一些业务办理的时候,我们常常需要签名。目前大多数场景都是…

IntelliJ IDEA 2023:创新不止步,开发更自由 mac/win版

IntelliJ IDEA 2023激活版是一款强大而智能的集成开发环境(IDE)&#xff0c;为开发者提供了一系列先进的功能和工具&#xff0c;帮助他们更高效地编写、调试和测试代码。 IntelliJ IDEA 2023 软件获取 IntelliJ IDEA 2023继承了其前代版本的优秀基因&#xff0c;并在此基础上进…

用 Python 自动化处理无聊的事情

“编程最棒的部分就是看到机器做一些有用的事情而获得的胜利。用 Python 将无聊的事情自动化将所有编程视为这些小小的胜利&#xff1b;它让无聊变得有趣。” Hilary Mason&#xff0c;数据科学家兼 Fast Forward Labs 创始人 “我很享受打破东西然后把它们重新组合起来的乐趣…

【JavaEE】_前端POST请求使用json向后端传参

目录 1. 关于json 2. 通过Maven仓库&#xff0c;将Jackson下载导入到项目中 3. 使用Jackson 3.1 关于readValue方法 3.2 关于Request.class类对象 3.3 关于request对象的属性类型 3.4 关于writeValueAsString 前端向后端传递参数通常有三种方法&#xff1a; 第一种&…

Redis之二:Redis 常用命令

Redis 命名不区分大小写 0.登录远程服务器 如果需要在远程 redis 服务上执行命令&#xff0c;同样我们使用的也是 redis-cli 命令。 语法 $ redis-cli -h host -p port -a password 获取配置信息&#xff1a; CONFIG GET CONFIG_SETTING_NAME 例&#xff1a; CONFIG GE…

BTC网络 vs ETH网络

设计理念 BTC 网络 比特币是一种数字货币&#xff0c;旨在作为一种去中心化的、不受政府或金融机构控制的电子货币。其主要目标是实现安全的价值传输和储存&#xff0c;比特币的设计强调去中心化和抗审查。 ETH 网络 以太坊是一个智能合约平台&#xff0c;旨在支持分散的应…

Windows系统x86机器安装(麒麟、统信)ARM系统详细教程

本次介绍在window系统x86机器上安装国产系统 arm 系统的详细教程。 注&#xff1a;ubuntu 的arm系统安装是一样的流程。 1.安装环境准备。 首先&#xff0c;你得有台电脑&#xff0c;配置别太差&#xff0c;至少4核8G内存&#xff0c;安装window10或者11都行&#xff08;为啥…

抖音视频评论批量下载软件|抖音数据抓取工具

随着业务需求的增长&#xff0c;抖音视频的下载需求也日益增加。传统的方式是通过逐个复制粘贴分享链接来下载视频&#xff0c;这种操作效率低下且耗时费力。为了解决这一问题&#xff0c;我们开发了一款基于C#的抖音视频评论批量下载软件&#xff0c;旨在实现通过关键词自动批…

Web服务器群集:OpenEuler 部署 LAMP(LNMP) 基础服务

目录 一、实验 1.环境 2. 网络配置 3. MobaXterm远程连接 4. apache 2.4.58 源码编译安装 5. php 8.3.1源码编译安装 6.配置httpd 连接 php-fpm 6. nginx 1.24.0源码编译安装 7. mysql 8.0.36安装 二、问题 1.MobaXterm设置右键复制粘贴 2.OpenEuler如何查看CPU的核…

Android 使用NanoHTTPD 架设 Http Server + 客户端App 发送请求示例(含上传图片示例)

NanoHTTPD 简介 使用该 lib,可以在 Android 设备上,架设 Http Server。客户端(Client) App,请求 http://[serverIp]:[server端口]/… 访问服务。适用于,局域网内多安卓设备(一台作为服务器,其它作为客户端)间通信。 https://github.com/NanoHttpd/nanohttpd 依赖:imple…

Linux内核模块签名与版本检查机制

内核模块签名机制 linux内核从3.7 开始加入模块签名检查机制, 校验签名是否与已编译的内核公钥匹配。目前只支持RSA X.509验证, 模块签名验证并非强制使用, 可在编译内核时配置是否开启。 CONFIG_MODULE_SIG: Module signature verification 开启该选项后,内核加载该模块…

npm install报错,常见的解决方案

当在使用 npm install 命令时遇到错误时&#xff0c;可以尝试以下一些常见的解决方案&#xff1a; 清除 npm 缓存&#xff1a; 运行以下命令清除 npm 缓存&#xff1a; npm cache clean --force更新 npm&#xff1a; 确保你正在使用最新版本的 npm。可以运行以下命令更新 npm&a…

使用Node.js开发一个文件上传功能

在现代 Web 应用程序开发中&#xff0c;文件上传是一个非常常见且重要的功能。今天我们将通过 Node.js 来开发一个简单而强大的文件上传功能。使用 Node.js 来处理文件上传可以带来许多好处&#xff0c;包括简单的代码实现、高效的性能和灵活的配置选项。 首先&#xff0c;我们…

【kubernetes】关于k8s集群的资源发布方式(灰度/滚动发布)

目录 一、常见的发布方式 二、详解kubectl陈述式方式做灰度发布&#xff08;金丝雀发布&#xff09; 步骤一&#xff1a;先基于deployment控制器创建pod&#xff0c;然后发布 步骤二&#xff1a;基于命令行灰度发布 步骤三&#xff1a;测试等到版本稳定以后&#xff0c;再完…

2月21日,每日信息差

&#x1f396; 素材来源官方媒体/网络新闻 &#x1f384; 10 家央企签订倡议书&#xff1a;将主动向社会开放人工智能应用场景 &#x1f30d; 上海成为首个固定资产投资破万亿的一线城市 &#x1f30b; 特斯拉扩建德国工厂的计划遭当地居民反对 &#x1f381; 加拿大公司利用木…

72_Pandas.DataFrame保存并读取带pickle的系列(to_pickle、read_pickle)

72_Pandas.DataFrame保存并读取带pickle的系列&#xff08;to_pickle、read_pickle&#xff09; 要将 pandas.DataFrame、pandas.Series 对象保存为 pickle 文件&#xff0c;请使用 to_pickle() 方法&#xff0c;并使用 pd.read_pickle() 函数读取保存的 pickle 文件。 在此对…

远程解难:苹果手机投屏到Windows电脑,给爸妈演示手机操作

明窗净几夜未央&#xff0c; 键盘轻敲解忧忙。 父母笑颜消难题&#xff0c; 孝心科技共光芒。 QQ、微信、小红书等社交软件不仅年轻人在用&#xff0c;老年人也逐步使用社交软件建立起自己的朋友圈。但这些“新”软件对于部分老年人来说还是太复杂&#xff0c;这就难免需要年…

Mysql常见用法(2)

目录​​​​​​​ mysql 约束 primary key 主键的基本使用 notnull(非空) unique(唯一) foreign key(外键) check 自增长 mysql索引 索引的原理 索引的类型 索引的使用 --添加索引 删除索引&#xff1a; -- 修改索引 &#xff0c; 先删除&#xff0c;在添加新…

vue前端密码加密,springboot后端密码解密

1.模块安装 1 npm install crypto-js 2.src–>util–>secret.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import CryptoJS from crypto-js // 默认的 KEY …

liunx单机项目部署

文章目录 1.liunx简介2.liunx的jdk安装2.liunx的tomcat安装3.liunx的mysql安装4.单机项目部署 1.liunx简介 Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff09;&#xff0c;是一种免费…