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.hqwc.cn/news/495513.html

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

相关文章

江科大stm32 定时器 TIM输出比较--学习笔记

这几天遇到输出比较相关的问题&#xff0c;于是来学习下TIM输出比较部分知识点&#xff01; 输出比较简介 CNT是计数器的值&#xff0c;CCR寄存器是捕获/ 比较寄存器 简单的讲&#xff0c;输出比较就是用来输出PWM波形。 PWM简介 占空比&#xff1a;高电平占一个周期的比例。…

袁庭新ES系列12节 | Elasticsearch高级查询操作

前言 上篇文章讲了关于Elasticsearch的基本查询操作。接下来袁老师为大家带来Elasticsearch高级查询部分相关的内容。Elasticsearch是基于JSON提供完整的查询DSL&#xff08;Domain Specific Language&#xff1a;领域特定语言&#xff09;来定义查询。因此&#xff0c;我们有…

vscode不能远程连接ubuntu18.04.6

目录 问题解决Portable Mode 安装vscode 补充说明学习资料 问题 vscode远程ssh连接ubuntu18.04.6时&#xff0c;出现如下提示框&#xff0c;单击Learn More后&#xff0c;定位到问题。Can I run VS Code Server on older Linux distributions? 原始是&#xff1a;需要glibc …

Vue项目构建优化

本文作者为 360 奇舞团前端开发工程师 宁航 在开发大型前端项目时&#xff0c;往往是一个需求对应一个分支&#xff0c;当完成需求后&#xff0c;就需要将代码打包、部署。代码通常需要部署到多个环境中&#xff0c;这些环境包括&#xff1a;日常环境、测试环境、回归环境和生产…

【操作技巧】如何给Jetson Orin Nano的ubuntu port换镜像源

学习《OpenCV应用开发&#xff1a;入门、进阶与工程化实践》一书 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; 换镜像源 因为工作需要&#xff0c;我想把之前Jetson Orin Nano上OpenCV4.5.4 升级到OpenCV4.8。先到这里下载脚本 wget htt…

搜维尔科技:OptiTrack 提供了性能最佳的动作捕捉平台

OptiTrack 动画 我们的 Prime 系列相机和 Motive 软件相结合&#xff0c;产生了世界上最大的捕获量、最精确的 3D 数据和有史以来最高的相机数量。OptiTrack 提供了性能最佳的动作捕捉平台&#xff0c;具有易于使用的制作工作流程以及运行世界上最大舞台所需的深度。 无与伦比…

【mysql 数据库事务】开启事务操作数据库,写入失败后,不回滚,会有问题么? 这里隐藏着大坑,复试,面试时可以镇住面试老师!!!!

建表字段: CREATE TABLE user (id INT(11) NOT NULL AUTO_INCREMENT,nickname VARCHAR(32) NOT NULL COLLATE utf8mb4_general_ci,email VARCHAR(32) NOT NULL COLLATE utf8mb4_general_ci,status SMALLINT(6) UNSIGNED NULL DEFAULT NULL,password VARCHAR(256) NULL DEFAULT…

P2141 [NOIP2014 普及组] 珠心算测验

AC代码&#xff1a; #include<iostream> #include<map>using namespace std;const int N 110; int a[N];int main() {int n;cin >> n;for(int i0;i<n;i) cin >> a[i];map<int,bool> mp;for(int i0;i<n;i){for(int ji1;j<n;j){mp[a[i…

Django配置静态文件

Django配置静态文件 目录 Django配置静态文件静态文件配置调用方法 一般我们将html文件都放在默认templates目录下 静态文件放在static目录下 static目录大致分为 js文件夹css文件夹img文件夹plugins文件夹 在浏览器输入url能够看到对应的静态资源&#xff0c;如果看不到说明…

在linux上不依赖于Nignx等服务器部署ASP.NET Core 7.0 WebAPI

笔者近期需要部署一款基于B/S架构的后端程序在linux的Debian发行版上&#xff0c;本文章以本次部署遇到的问题为线索&#xff0c;总结如何在Debian上部署ASP.NET Core7.0WebAPI应用程序。 在linux上不依赖于Nignx等服务器部署ASP.NET Core 7.0 WebAPI 1.先决条件2.应用发布3.部…

MetaGPT 1 安装与配置踩坑实录

安装 与 配置直接参考这里就行&#xff1a;Hugging Muti Agent&#xff08;二月学习&#xff09; - 飞书云文档 (feishu.cn) 这里按照教程安装的是metagpt 0.6.6 &#xff0c;经过跟0.7.0对比&#xff0c;个人认为0.7对其他llm接入可能更好&#xff0c;文档也更清晰。 0.6.6的…

【Python笔记-设计模式】中介者模式

一、说明 中介者模式是一种行为设计模式&#xff0c;减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互&#xff0c;迫使它们通过一个中介者对象进行合作。 (一) 解决问题 降低系统中对象之间的直接通信&#xff0c;将复杂的交互转化为通过中介者进行的间接交…