C#调用OpenCvSharp实现图像的开运算和闭运算

news/2025/1/18 3:18:06/

  对图像同时进行腐蚀和膨胀操作,顺序不同则效果也不同。先腐蚀后膨胀为开运算,能够消除小斑点和细小的突出物、平滑图像以及改善边缘;先膨胀后腐蚀为闭运算,能够去除噪点、填补图像孔洞、连接邻近物体和平滑物体边界。
  OpenCvSharp中调用Cv2.MorphologyEx函数执行开运算闭运算操作(函数原型见下方),其主要参数意义如下:
  1)src:源图像,可以输入Mat类型实例;
  2)dst:腐蚀或膨胀函数的处理结果,可以用Mat类型;
  3)op:指定形态学操作,MorphTypes类型,支持膨胀、腐蚀、开运算闭运算等八种操作;
  4)element:核矩形,可以使用getStructuringElement函数创建,也可以使用Mat.Ones函数创建,可以是矩形,也可以是十字形、椭圆形等形状;
  5)anchor :核矩形的中心位置,默认值为(-1, -1),也即矩形的中心;
  6)iterations:操作执行次数,默认为1次。

public static void MorphologyEx(InputArray src, OutputArray dst, MorphTypes op, InputArray? element, Point? anchor = null, int iterations = 1, BorderTypes borderType = BorderTypes.Constant, Scalar? borderValue = null)

  最后是使用示例及图像处理效果,示例图形左侧为原图,右侧为处理后的图形,对比圈红出的内容即可看出两种不同操作的效果。

int iterations = Convert.ToInt32(textBox1.Text);
using Mat imgSrc = Cv2.ImRead(lblMsg.Text);using Mat kernalMat = Mat.Ones(Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox2.Text),MatType.CV_8UC1);
using Mat imgDest = new Mat(imgSrc.Size(), imgSrc.Type());
Cv2.MorphologyEx(imgSrc, imgDest, MorphTypes.Open, kernalMat, null, iterations);Cv2.ImShow("开运算操作", imgDest);

在这里插入图片描述

int iterations = Convert.ToInt32(textBox1.Text);
using Mat imgSrc = Cv2.ImRead(lblMsg.Text);using Mat kernalMat = Mat.Ones(Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox2.Text), MatType.CV_8UC1);
using Mat imgDest = new Mat(imgSrc.Size(), imgSrc.Type());
Cv2.MorphologyEx(imgSrc, imgDest, MorphTypes.Close, kernalMat, null, iterations);Cv2.ImShow("闭运算操作", imgDest);

在这里插入图片描述

参考文献:
[1]https://github.com/shimat/opencvsharp
[2]https://opencv.org/
[3]https://github.com/opencv/opencv
[4]https://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.html


http://www.ppmy.cn/news/1564047.html

相关文章

jenkins常用插件和旧版本插件下载——筑梦之路

常用插件 Git Plugin:支持Git版本控制系统,以便从Git仓库拉取代码。几乎所有使用Git作为版本控制的项目都会用到此插件。 Pipeline:允许用户用代码定义整个CI/CD流水线,适合复杂的构建、测试和发布流程。 Blue Ocean&#xff1a…

人工智能任务19-基于BERT、ELMO模型对诈骗信息文本进行识别与应用

大家好,我是微学AI,今天给大家介绍一下人工智能任务19-基于BERT、ELMO模型对诈骗信息文本进行识别与应用。近日,演员王星因接到一份看似来自知名公司的拍戏邀约,被骗至泰国并最终被带到缅甸。这一事件迅速引发了社会的广泛关注。该…

AI Prompt 设计指南:从基础构建到高质量生成的全面解析

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

【20250112】TRO论文:下肢外骨骼机器人的“触感透明度”与交互力实时控制新方法...

引言:人机交互力控制是优化下肢外骨骼机器人性能的重要环节,精准的交互力控制对用户的安全和舒适性至关重要。传统的外骨骼控制策略通常依赖简化的动力学模型,忽略了外骨骼与人体之间复杂的全身动态相互作用。而引入全身动力学建模并结合优化…

如何攻击一个服务器(仅用于教育及娱乐实验目的)

import socket import osdef create_virus():# 创建一个简单的病毒脚本,它会不断尝试连接目标服务器并发送恶意数据virus_code """ import socket import time import threadingdef attack_server(ip, port):while True:try:s socket.socket(socke…

C# 特性(Attributes)详解

C# 特性(Attributes)详解 什么是特性? 特性(Attributes) 是 C# 提供的一种强大的元数据机制,用于在代码中添加描述性信息。它可以附加到程序的各种部分(类、方法、属性、字段等)&a…

如何通过 Nginx 实现 CouchDB 集群的负载均衡并监控请求分发

在现代分布式系统中,负载均衡是确保高可用性和性能的关键组件。CouchDB 是一个强大的分布式数据库,而 Nginx 是一个高性能的反向代理和负载均衡器。本文将详细介绍如何通过 Nginx 实现 CouchDB 集群的负载均衡,并监控请求被分发到哪一台 Couc…

Nginx安全加固系列:404页面失去保护

为了预防危害漏洞, Nginx在配置文件里添加了一系列的标头,是通过add_head这个命令,常见的有 http {## 内容安全策略CSPadd_header Content-Security-Policy "default-src self; script-src self; "## 禁止该文件被frameadd_header…