C#使用OpenCvSharp4库中5个基础函数-灰度化、高斯模糊、Canny边缘检测、膨胀、腐蚀
C#使用OpenCvSharp4库中5个基础函数-灰度化、高斯模糊、Canny边缘检测、膨胀、腐蚀
使用OpenCV可以对彩色原始图像进行基本的处理,涉及到5个常用的处理:
-
- 灰度化
-
- 模糊处理
-
- Canny边缘检测
-
- 膨胀
-
- 腐蚀
1、测试图像lena.jpg
本例中我们采用数字图像处理中经常用到的一副标准图像lena.png作为测试图像,如下图所示:

具体资源下载地址为:lena图像下载地址

2、使用Visual Studio 2022创建一个基于C# .Net控制台的程序
首先我们新建一个基于C# .Net控制台的程序,项目名为OpenCVExample,然后把lena.jpg拷贝到E:\SoftDevelop\CPlus\VS2022Projects\CSharpExamples\OpenCVExample\OpenCVExample\bin\Debug\images对应目录下,如下图所示:

安装OpenCvSharp4和OpenCvSharp4.runtime.win两个NuGet包,或者直接安装OpenCvSharp4.Windows包

安装OpenCvSharp4和OpenCvSharp4.runtime.win两个NuGet包之后,packages.config配置文件如下:
<?xml version="1.0" encoding="utf-8"?>
<packages><package id="OpenCvSharp4" version="4.9.0.20240103" targetFramework="net48" /><package id="OpenCvSharp4.runtime.win" version="4.9.0.20240103" targetFramework="net48" /><package id="System.Buffers" version="4.5.1" targetFramework="net48" /><package id="System.Memory" version="4.5.5" targetFramework="net48" /><package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" /><package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" /><package id="System.ValueTuple" version="4.5.0" targetFramework="net48" />
</packages>
C#示例代码
对应的C#代码如下:
using OpenCvSharp;namespace OpenCVExample
{public class Program{/// <summary>/// OpenCV的5个基础函数-灰度化、高斯模糊、Canny边缘检测、膨胀、腐蚀/// </summary>public static void FiveBasicFunction(){Mat img = Cv2.ImRead("images/lena.jpg"); // 读取图像Mat grayImg = new Mat();Cv2.CvtColor(img, grayImg, ColorConversionCodes.BGR2GRAY);Mat blurImg = new Mat();Cv2.GaussianBlur(grayImg, blurImg, new Size(7, 7), 0);Mat cannyImg = new Mat();Cv2.Canny(blurImg, cannyImg, 150, 200);Mat dialationImg = new Mat();Mat kernel = new Mat(5, 5, MatType.CV_8UC1);Cv2.Dilate(blurImg, dialationImg, kernel);Mat erodeImg = new Mat();Cv2.Erode(dialationImg, erodeImg, kernel);Cv2.ImShow("Image", img); // 显示原图像Cv2.ImShow("Gray Image", grayImg); // 显示灰度图像Cv2.ImShow("Blur Image", blurImg); // 显示高斯模糊图像Cv2.ImShow("Canny Image", cannyImg); // 显示Canny边缘检测图像Cv2.ImShow("Dialation Image", dialationImg); // 膨胀图Cv2.ImShow("Erode Image", erodeImg); // 腐蚀图Cv2.WaitKey(0);Cv2.DestroyAllWindows();}static void Main(string[] args){FiveBasicFunction();//Console.ReadKey();}}
}
程序运行结果
在VS2022中运行上述代码,结果如下图所示:



参考资料
- https://github.com/shimat/opencvsharp
- LEARN OPENCV C++ in 4 HOURS | Including 3x Projects | Computer Vision
- Learn-OpenCV-cpp-in-4-Hours
- LEARN OPENCV in 3 HOURS with Python | Including 3xProjects | Computer Vision
- Learn-OpenCV-in-3-hours
相关文章:
C#使用OpenCvSharp4库中5个基础函数-灰度化、高斯模糊、Canny边缘检测、膨胀、腐蚀
C#使用OpenCvSharp4库中5个基础函数-灰度化、高斯模糊、Canny边缘检测、膨胀、腐蚀 使用OpenCV可以对彩色原始图像进行基本的处理,涉及到5个常用的处理: 灰度化 模糊处理 Canny边缘检测 膨胀 腐蚀 1、测试图像lena.jpg 本例中我们采用数字图像处…...
蓝桥杯2024/1/31----第十届省赛题笔记
题目要求: 1、 基本要求 1.1 使用大赛组委会提供的国信长天单片机竞赛实训平台,完成本试题的程序设计 与调试。 1.2 选手在程序设计与调试过程中,可参考组委会提供的“资源数据包”。 1.3 请注意: 程序编写、调试完成后选手…...
CANopen转Profinet网关实现原理与CANopen主站配置方法
CANopen转Profinet网关(XD-COPNm20)具有Profinet从站功能的设备。CANopen是一种通用的工业网络协议,而Profinet是以太网上的一种通信协议,两者在工业自动化领域具有广泛的应用。CANopen转Profinet网关的主要作用是实现CANopen设备…...
Mysql单行函数练习
数据表 链接:https://pan.baidu.com/s/1dPitBSxLznogqsbfwmih2Q 提取码:b0rp --来自百度网盘超级会员V5的分享 单行函数练习 单行函数(一行数据返回一个结果) #1.显示系统时间(注:日期时间) #2.查询员工工号,姓名,工资以及提高百分之20后的结果(new…...
C++ 11新特性之完美转发
概述 在C编程语言的演进过程中,C 11标准引入了一系列重大革新,其中之一便是“完美转发”机制。这一特性使得模板函数能够无损地传递任意类型的实参给其他函数或构造函数,从而极大地增强了C在泛型编程和资源管理方面的灵活性与效率。 完美转发…...
python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-友情链接管理实现
锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…...
【百度Apollo】探索自动驾驶:深入解析Apollo开放平台架构的博客指南
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…...
代理模式详解(重点解析JDK动态代理)
- 定义 在解析动态代理模式之前,先简单看下整个代理模式。代理模式分为普通代理、强制模式、动态代理模式。其中动态代理模式主要实现方式为Java JDK提供的JDK动态代理,第三方类库提供的,例如CGLIB动态代理。 代理模式就是为其他对象提供一种…...
【大厂AI课学习笔记】1.3 人工智能产业发展(2)
(注:腾讯AI课学习笔记。) 1.3.1 需求侧 转型需求:人口红利转化为创新红利。 场景丰富:超大规模且多样的应用场景。主要是我们的场景大,数据资源丰富。 抗疫加速:疫情常态化,催生新…...
【Python】一个简单的小案例:实现将两张图片合并为一张
使用时保证已经安装了opencv-python import cv2bg "BG.jpg" # 背景图名称 fg "FG.jpg" # 前景图名称 output_filename "new.jpg" # 合成后图片名称img_bg cv2.imread(bg) # 读取背景图 img_fg cv2.imread(fg) # 读取前景图# 读取背景…...
不同的强化学习模型适配与金融二级市场的功能性建议
DQN ES DDPG A2C TD3 SAC QMIX MADDPG PPO CQL IMPALA 哪个模型适合进行股票操作 在考虑使用哪种模型进行股票操作时,需要考虑模型的特点、适用场景以及实现复杂度等因素。以下是对您列出的几种强化学习模型的简要概述,以帮助您做出选择: DQ…...
【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 )
文章目录 一、音频 比特率 / 码率1、音频 比特率2、音频 比特率 案例3、音频 码率4、音频 码率相关因素5、常见的 音频 码率6、视频码率 - 仅做参考 二、音频 帧 / 帧长1、音频帧2、音频 帧长度 三、音频 帧 采样排列方式 - 交错模式 和 非交错模式1、交错模式2、非交错模式 一…...
spring常用语法
etl表达式解析 if (rawValue ! null && rawValue.startsWith("#{") && entryValue.endsWith("}")) { // assume its spel StandardEvaluationContext context new StandardEvaluationContext(); context.setBeanResolver(new Be…...
【计算机毕业设计】128电脑配件销售系统
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...
换个思维方式快速上手UML和 plantUML——类图
和大多数朋友一样,Jeffrey 在一开始的时候也十分的厌烦软件工程的一系列东西,对工程化工具十分厌恶,觉得它繁琐,需要记忆很多没有意思的东西。 但是之所以,肯定有是因为。对工程化工具的不理解和不认可主要是基于两个逻…...
策略模式+SpringBoot接口,一个接口实现接收的数据自动分流处理
策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式的精髓就在于将经常变化的一点提取出来,单独变成一类,并且各个类别可以相互替换和组合。 1、策略接口 CalculationStrategy //算数 public interface…...
P1228 地毯填补问题(葬送的芙蓉王【bushi】)
地毯填补问题 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿。宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的所有地…...
352. 闇の連鎖(树上差分,LCA)
352. 闇の連鎖 - AcWing题库 传说中的暗之连锁被人们称为 Dark。 Dark 是人类内心的黑暗的产物,古今中外的勇者们都试图打倒它。 经过研究,你发现 Dark 呈现无向图的结构,图中有 N 个节点和两类边,一类边被称为主要边ÿ…...
dcat admin + dingo + nginx 开发前台
前言 Dcat Admin 是一个功能强大的后端框架,主要用于开发管理后台。然而,大多数网站不仅需要一个管理后台,还需要一个用户界面,即“前台”,以及它们自己的用户系统。 为了实现这一目标,我们需要对 Dcat A…...
安卓线性布局LinearLayout
<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:…...
校招数据决策系统:可解释逻辑回归与SHAP驱动的HR智能筛选
1. 项目概述:这不是一份“求职简历分析”,而是一套可复用的校园招聘数据决策系统“Campus Recruitment: EDA and Classification — Part 2”这个标题,乍看像某门数据科学课的作业编号,但实际拆解下来,它指向一个非常具…...
昇腾CANN amct:模型压缩工具的量化和部署实践
amct(Ascend Model Compression Toolkit)是 CANN 内置的模型压缩工具,不是 AtomGit 上的独立开源仓库——它在 CANN AOE 调优引擎里作为一个子模块运行。amct 做三件事:量化(INT8/FP16)、剪枝(结…...
本地视频怎么去水印?2026本地视频去水印软件推荐与方法合集
不少朋友都会碰到一个烦恼:从抖音、快手、小红书下载的视频都带着水印,自己录制的视频也会被社交平台自动添加水印。想要去掉这些水印用于素材库或后期编辑,却不知道该怎么办。别急,今天就给你盘点2026年最实用的本地视频去水印方…...
3分钟掌握PCB交互式BOM:告别传统表格的终极可视化方案
3分钟掌握PCB交互式BOM:告别传统表格的终极可视化方案 【免费下载链接】InteractiveHtmlBom Interactive HTML BOM generation plugin for KiCad, EasyEDA, Eagle, Fusion360 and Allegro PCB designer 项目地址: https://gitcode.com/gh_mirrors/in/InteractiveH…...
Donut端到端票据识别:小票图像直出结构化JSON
1. 项目概述:一张小票,如何让AI“看懂”并结构化输出?你有没有试过把超市小票拍张照,想让手机自动提取“总金额:89.50”“商品:牛奶2”“时间:2024-03-12 18:23”这些信息?不是OCR识…...
UE5 GAS修改Attribute的四种正确方式与原理
1. 为什么改Attribute不是简单赋值,而是要走GAS的整套流程 在UE5中用Gameplay Ability System(GAS)做RPG,很多人刚上手时都会卡在一个看似最基础的问题上: “我想让角色血量100,直接写 Attributes.Health…...
免费高效的窗口放大神器:Magpie让Windows显示效果翻倍提升
免费高效的窗口放大神器:Magpie让Windows显示效果翻倍提升 【免费下载链接】Magpie A general-purpose window upscaler for Windows 10/11. 项目地址: https://gitcode.com/gh_mirrors/mag/Magpie 还在为老旧游戏或软件在4K显示器上显示模糊而烦恼吗&#x…...
基于PSOC62 CAPSENSE的远程空调遥控器:物联网与红外控制实践
1. 项目概述:当传统遥控器遇上物联网你有没有遇到过这样的场景:大夏天回到家,一身汗,还得在包里翻箱倒柜找空调遥控器;或者冬天窝在被窝里,发现遥控器在客厅茶几上,得鼓起勇气离开温暖的被窝去拿…...
抖音下载工具终极指南:如何免费保存视频、直播和合集内容
抖音下载工具终极指南:如何免费保存视频、直播和合集内容 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...
5G通信实战:手把手教你用Vivado LDPC IP核配置编码参数(附避坑指南)
5G通信实战:FPGA开发中的LDPC编解码参数配置全解析 在5G通信系统的开发过程中,LDPC(低密度奇偶校验)码作为物理层的关键技术之一,其实现质量直接影响着系统的传输性能和可靠性。对于使用Xilinx FPGA进行5G基带开发的工…...
