16 opencv 图像开和闭运算

news2024/11/15 20:02:09

文章目录

  • 形态学处理
    • 操作函数
      • 核操作
  • 综合案例

形态学处理

处理类型操作作用
开运算先腐蚀再膨胀可在纤细点出分离物体。有助于消除噪音
闭运算先膨胀后腐蚀用于排除前景对象中的小孔或对象上的小黑点
形态学梯度膨胀图与腐蚀图之差用于保留目标物体的边缘轮廓
顶帽原图与开运算图之差分离比邻近点亮的斑块,用于突出原图像中比周围亮的区域
黑帽闭运算图与原图差分离比邻近点暗的斑块,突出原图像中比周围暗的区域

操作函数

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:					 操作的核
*					参数为0:中心3*3的核
*			anchor:					锚点
*					(-1,-1):表示位于中心
*			iterations:				 迭代的次数
*			borderType:				 图像外部像素的某种边界模式
*			borderValue:			 边界值,一般不管
*********************************************************************/
//操作类型
enum MorphTypes{
    MORPH_ERODE    = 0, //腐蚀
    MORPH_DILATE   = 1, //膨胀
    MORPH_OPEN     = 2, //开操作
    MORPH_CLOSE    = 3, //闭操作
    MORPH_GRADIENT = 4, //梯度操作
    MORPH_TOPHAT   = 5, //顶帽操作
    MORPH_BLACKHAT = 6, //黑帽操作
    MORPH_HITMISS  = 7  //随机操作,只支持CV_8UC1模式
}

核操作

Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1));
/*******************************************************************
*			shape: 					形状类型
*			ksize:					大小
*			anchor:					锚点
*					(-1,-1):表示位于中心
*********************************************************************/
//shape取值
enum MorphShapes {
    MORPH_RECT    = 0, //矩形
    MORPH_CROSS   = 1, //十字交叉
    MORPH_ELLIPSE = 2  //椭圆                   
};

综合案例

#include <iostream>
#include <map>
#include <string>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
class Morphology 
{
public:
	Morphology() :img(imread("20.jpg")) 
	{
		result["原图"] = img;
	}
	void Show() 
	{
		for (auto& v : result) 
		{
			imshow(v.first, v.second);
		}
		waitKey(0);
	}

	void TestMorphology() 
	{
		Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
		morphologyEx(img, result["腐蚀"], MORPH_ERODE, kernel);
		morphologyEx(img, result["膨胀"], MORPH_DILATE, kernel);
		morphologyEx(img, result["开"], MORPH_OPEN, kernel);
		morphologyEx(img, result["闭"], MORPH_CLOSE, kernel);
		morphologyEx(img, result["梯度"], MORPH_GRADIENT, kernel);
		morphologyEx(img, result["顶帽"], MORPH_TOPHAT, kernel);
		morphologyEx(img, result["黑帽"], MORPH_BLACKHAT, kernel);
	}
private:
	Mat img;
	map<string, Mat> result;
};
int main() 
{
	Morphology* pmorph = new Morphology;
	pmorph->TestMorphology();
	pmorph->Show();
	return 0;
}

在这里插入图片描述

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

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

相关文章

AIgo C++ 面向ai算法的c++

https://github.com/shouxieai/algorithm-cpp http://aipj.aijdjy.com/course/13/task/266/show# https://www.yuque.com/books/share/0729cafa-4751-40e5-9f5d-bb617c0e9708?# 《C》 &#x1f4bb; AI算法视角下的c 视频问手写ai vx: shouxie_ai [共11节课&#xff0c;每节课…

企业微信第三方应用发邮件流程及java代码

具体思路&#xff1a; 1、申请企业微信。 2、在企业微信创建一个邮箱。 3、自建第三方应用。 4、从第三方应用&#xff0c;获取“Secret”值。 5、在第三方应用中&#xff0c;建立企业可信IP。 6、获取企业corpid。 7、写java代码&#xff0c;获取access_token。 参考&a…

华为开源自研AI框架昇思MindSpore应用案例:ResNet50迁移学习

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 AI融合计算的蓬勃发展&#xff0c;对框架能力提出了新的需求和挑战。问题场景和模型设计逐渐复杂化&#xff0c;使得业务数据的维度和计算逻辑的嵌套深度也相应增长。结合向量化优化手段可以有效优化性能瓶…

Delving into Localization Errors for Monocular 3D Object Detection 论文学习

论文地址&#xff1a;Delving into Localization Errors for Monocular 3D Object Detection Github地址&#xff1a;Delving into Localization Errors for Monocular 3D Object Detection 1. 解决了什么问题&#xff1f; 从单目图像准确地估计 3D 框是自动驾驶领域的重要功…

图像去模糊中的均值滤波、高斯滤波、双边滤波简单介绍及代码演示

文章目录 图像去模糊中的均值滤波、高斯滤波和双边滤波简单介绍均值滤波高斯滤波双边滤波总结 图像去模糊中的均值滤波、高斯滤波和双边滤波简单介绍 图像模糊是指图像中的细节和边缘被平滑和模糊化&#xff0c;通常是由于图像采集设备或者图像传输过程中的噪声和抖动引起的。…

SQL 执行顺序

数据的关联过程 from&join&where group by having&where select order by limit 这是一条标准的查询语句: 这是我们实际上SQL执行顺序&#xff1a; 我们先执行from,join来确定表之间的连接关系&#xff0c;得到初步的数据 where对数据进行普通的初步的筛选 …

低代码开发重要工具:jvs列表页中如何实现左树右表的配置

左树右表是一种数据查询展示方式&#xff0c;通常用于处理带有层级关系的查询条件的数据展示。它的基本思想是将一个大表分成左树和右表&#xff0c;左树是一个树形结构&#xff0c;右表是一个扁平的表。通过在左树上建立索引&#xff0c;可以大大提高查询效率。 左树右表的实…

C/C++每日一练(20230504)

目录 1. 将数据流变为多个不相交区间 &#x1f31f;&#x1f31f;&#x1f31f; 2. 冒泡法排序大小 &#x1f31f; 3. Pow(x, n) &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专…

使用机器人为无线传感器网络提供服务(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 无线传感器网络是一种无线网络&#xff0c;包括大量循环的、自定向的、微小的、低功耗的设备&#xff0c;称为传感器节点&…

MySQL存储引擎对比总结

文章目录 一、存储引擎是什么二、存储引擎有哪些三、常用存储引擎介绍1、InnoDB2、MyISAM3、MEMORY4、MRG_MYISAM &#xff08;MERGE&#xff09;5、ARCHIVE6、BLACKHOLE7、FEDERATED8、CSV9、PERFORMANCE_SCHEMA10、NDB 一、存储引擎是什么 存储引擎是数据库的核心&#xff0…

微信小程序实现订阅消息功能(Node服务器篇)

在上一篇内容当中在微信小程序中实现订阅消息功能&#xff0c;都在客户端(小程序)中来实现的&#xff0c;在客户端中模拟了服务器端来进行发送订阅消息的功能&#xff0c;那么本篇就将上一篇内容中仅在客户端中实现发送订阅消息功能进行一个分离&#xff0c;使用 Node.js 搭载后…

吧佬联手抵制奸商,百元级游戏电脑横出江湖

最近小忆闲得在电商平台搜索了下关键词「游戏主机」&#xff0c;不出意外销量榜前列清一色全是「i9 级高端游戏主机」。 这些主机不论配置单介绍还是十万百万级销量宣传标语&#xff0c;都给人一种血赚不亏的「豪华」感。 咱就说时代在变&#xff0c;唯一不变的是奸商们的套路与…

什么样的台灯灯光是好的?推荐中性色温的护眼台灯

台灯的灯光指的是白光和黄光&#xff0c;就是台灯的色温&#xff0c;而色温也是也会影响我们的直观感受的。 低色温&#xff08;>3000K&#xff09;光源偏黄&#xff0c;属于暖色调&#xff0c;适合休息高色温&#xff08;<5000K&#xff09;光源偏白&#xff0c;属于冷…

MWORKS.Sysplorer 2023a前瞻版上线——面向MBD全流程的覆盖

信息物理融合系统&#xff08;CPS&#xff09;的设计、建模与仿真是装备数字化的核心技术。MWORKS.Sysplorer经过多年的发展&#xff0c;已经支持机械、电气、流体、热力学等多个物理域的统一建模和统一仿真求解&#xff0c;解决了物理域统一表达与统一建模问题。为了支持完整的…

嘉立创EDA元件库开发环境及设计介绍

一、元件符号概述 如图1所示&#xff0c;元件符号是元件在原理图中的表现形式&#xff0c;主要由元件边框、管脚&#xff08;包括管脚符号和管脚名称&#xff09;、元件名称及说明组成&#xff0c;通过放置的管脚来建立电气连接关系。元件符号中管脚序号是和电子元件实物的管脚…

Node 11会话控制

会话控制 介绍 所谓会话控制就是 对会话进行控制 HTTP 是一种无状态的协议&#xff0c;它没有办法区分多次的请求是否来自于同一个客户端&#xff0c;无法区分用户 而产品中又大量存在的这样的需求&#xff0c;所以我们需要通过 会话控制 来解决该问题 常见的会话控制技术有…

ChatGPT被淘汰了?Auto-GPT到底有多强

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。 说Auto-GPT淘汰了ChatGPT了&#xff0c;显然是营销文案里面的标题党。毕竟它还是基于ChatGPT的API&#xff0c;某种意义只是基于ChatGPT能力的应用。但最近&#xff0c;Auto…

大型央企集团财务经营分析框架系列(二)

01集团化的数字化项目为什么会失败深度原因&#xff1a;方向性错误 这几年见过一些央企、国企、大型企业集团尝试过一些数字化的项目&#xff1a;数据中台、大数据分析、BI 分析项目&#xff0c;投入很大、周期也很长&#xff0c;甚至有的在项目开始前也找了专业的咨询公司来规…

按键外部中断

文章目录 运行环境&#xff1a;1.1 按键外部中断1)按键检测2)外部中断的3中触发方式 2.1配置1)原理图2)引脚配置3)中断配置4)RCC和SYS 3.1代码分析3.2添加代码1)中断处理函数IRQ中添加电平转换代码2)launch设置 5.1实验效果 运行环境&#xff1a; ubuntu18.04.melodic 宏基暗影…

如何用ChatGPT做团队绩效管理?根据员工的个人优势、不足、目标来生成更具体的绩效反馈

该场景对应的关键词库&#xff1a;&#xff08;25个&#xff09; 绩效管理、目标设定、绩效评估、员工优势、员工弱点、反馈机制、个人发展计划、职业规划、评估工具、数据分析、绩效考核、评分标准、KPI指标、成果目标、个人任务、团队任务、激励机制、晋升机会、增量奖励、培…