C# 使用OpenCV基本图像操作功能

2023-11-01

C# 使用OpenCV

OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。C#在上位机开发中比较常用,有些项目需要在上位机上加入一些机器视觉相关的功能,在下面简单介绍了C#中使用OpenCV库的方法。

安装OpenCV包

在管理NuGet包中,搜索OpenCvSharp4,安装三个包,OpenCV在Net平台的核心包OpencvSharp4,windows平台运行包OpenCvSharp4.runtime.win,扩展包OpenCvSharp4.Extensions

三个包的介绍:

  1. OpencvSharp4 :.NET 的 OpenCV 包装器。 由于此包仅包含核心托管库,因此需要另一个适用于您操作系统的本机绑定包 (OpenCvSharp4.runtime.*)。
  2. OpenCvSharp4.runtime.win:OpenCvSharp 的内部实现包,可在 UWP 以外的 Windows 上运行。
  3. OpenCvSharp4.Extensions :OpenCvSharp GDI+ 扩展库。
    在这里插入图片描述注意:net framework需要4.8才能支持
    在这里插入图片描述

图片操作

Mat类

Mat是OpenCV中一个非常重要的类,它用于存储和操作图像像素数据,图像读写和处理都要用到Mat类。

图片读入

使用Mat Cv2.ImRead(string fileName, ImreadModes flags = ImreadModes.Color)读入图片

参数:

fileName:图片路径

flags :图片读入模式,默认Color(3 通道 BGR 彩色图像)

返回值:

Mat类型:用于存储和操作图像像素数据

示例:

Mat image = Cv2.ImRead("image.jpg");

图片读入模式

ImreadModes是指定加载图像的颜色和深度的枚举,他可选的类型如下:

    [Flags]
    public enum ImreadModes
    {
        //
        // 摘要:
        //    如果设置,则按原样返回加载的图像(带 alpha 通道,否则会被裁剪)。
        Unchanged = -1,
        //
        // 摘要:
        //   如果设置,总是将图像转换为单通道灰度图像。
        Grayscale = 0x0,
        //
        // 摘要:
        //     如果设置,总是将图像转换为 3 通道 BGR 彩色图像。
        Color = 0x1,
        //
        // 摘要:
        //   如果设置,当输入具有相应的深度时返回16位/32位图像,否则将其转换为8位。
        AnyDepth = 0x2,
        //
        // 摘要:
        //     如果设置,图像将以任何可能的颜色格式读取。
        AnyColor = 0x4,
        //
        // 摘要:
        //     如果设置,则使用 gdal 驱动程序加载图像。
        LoadGdal = 0x8,
        //
        // 摘要:
        //     如果设置,总是将图像转换为单通道灰度图像,图像尺寸缩小 1/2。
        ReducedGrayscale2 = 0x10,
        //
        // 摘要:
        //     如果设置,总是将图像转换为 3 通道 BGR 彩色图像并且图像尺寸减小 1/2。
        ReducedColor2 = 0x11,
        //
        // 摘要:
        //     如果设置,总是将图像转换为单通道灰度图像,图像尺寸缩小 1/4。
        ReducedGrayscale4 = 0x20,
        //
        // 摘要:
        //     如果设置,总是将图像转换为 3 通道 BGR 彩色图像并且图像尺寸缩小 1/4。
        ReducedColor4 = 0x21,
        //
        // 摘要:
        //       如果设置,总是将图像转换为单通道灰度图像,图像尺寸缩小 1/8。
        ReducedGrayscale8 = 0x40,
        //
        // 摘要:
        //    如果设置,总是将图像转换为 3 通道 BGR 彩色图像并且图像尺寸减小 1/8。
        ReducedColor8 = 0x41,
        //
        // 摘要:
        //     如果设置,则不根据 EXIF 的方向标志旋转图像。
        IgnoreOrientation = 0x80
    }

图像显示

  1. 在新的窗口中显示图像

使用Cv2.ImShow(string winName, Mat mat)打开一个窗口显示图像

winName:窗体名称

mat:Mat类,存储的图像数据

  Cv2.ImShow("test", mat);
  1. 关闭图像

Cv2.DestroyWindow(string winName)关闭对应的图像窗口

winName:要关闭的窗体名称

Cv2.DestroyWindow("test");

3.关闭所有图像窗口

Cv2.DestroyAllWindows() 关闭所有显示图像的窗口

 Cv2.DestroyAllWindows();

图像写入

使用Cv2.ImWrite(string fileName, Mat img, int[]? prms = null)进行写入

fileName:文件名

img:写入的文件对象,Mat类型

    Cv2.ImWrite("test2.png", mat);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 使用OpenCV基本图像操作功能 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 十、Spring Boot 安全管理(3)

    本章概要 高级配置 10 3 高级配置 10 3 1 角色继承 10 2 节中定义了三种角色 但是这三种角色之间不具备任何关系 一般来说角色之间是有关系的 例如 ROLE admin 一般既具有 admin 权限 又具有 user 权限 那
  • bat脚本——提取多个文件夹到指定路径

    本文将使用windows下的批处理 bat 脚本实现文件复制的一些功能 核心内容在于创建bat脚本 dir和xcopy等命令的使用 xcopy和dir命令使用说明 windows系统下打开命令提示符 cmd 输入以下命令可以查看dir和xc
  • python把txt变成list,并且写入xslx文件

    需求 1 把txt文件的内容变成list 2 然后写入excel中 txt文件内容 IP txt 192 168 199 201 4C8G 200G 192 168 199 202 4C8G 200G 192 168 199 203 4C8
  • NOIP2020南开之役——退役之战

    文章目录 一 关于过程 1 考前准备 2 考时过程 2 考后搞心态 二 我的感想 谢谢 一 关于过程 1 考前准备 我认为 在这一方面 我已经尽力了 考前一周我是天天中午去机房刷题 总结 没有半点划水 并且每天晚自习我拼了命地做作业 总是第
  • pacemaker命令小记

    pacemaker一些命令及解释 crm help crm configure show 查看配置 crm mon version 查看版本 crm configure primitive ClusterIP ocf heartbeat I
  • client-go基础用法之增删改查deployment

    文章目录 1 创建clientSet 2 获取pod信息 3 获取deployment信息 4 更新deployment副本数量 5 更新deployment镜像 6 删除deployment 7 创建deployment和service
  • wget: unable to resolve host address解决方法

    利用wget下载东西时 比如输入指令wget www baidu com 提示报错 wget unable to resolve host address wget 无法解析主机地址 这就能看出是DNS解析的问题 解决办法 修改 etc r
  • springcloud gateway整合 sentinel nacos

    前言 Sentinel 分布式系统的流量防卫兵 是阿里中间件团队2018年7月开源的 面向分布式服务架构的轻量级流量控制产品 主要以流量为切入点 从流量控制 熔断降级 系统负载保护等多个维度来保护系统服务的稳定性 Sentinel 具有以下
  • unity通过ARFoundation开发苹果AR项目(三)

    unity通过ARFoundation开发苹果AR项目 三 接着上篇继续讲 上一讲中我们说到了将AR Session Original下的AR Camera设置为main camera 然后我们进行正式的项目开发 实现功能 实现对空间的寻找
  • window 如何查看是否安装mvn_如何在windows配置maven环境变量 看完你就知道了

    最近看到好多人maven环境变量配置不成功 如何正确的进行maven安装 如何正确进行maven环境变量配置 今天我详细的介绍如何配置maven环境变量 工具 材料 windows7 apache maven 3 2 2 bin zip 操
  • 计算机联锁怎么排进路,计算机联锁进路选排设计

    课程名称 计算机联锁 设计题目 计算机联锁进路选排设计 院系 计算机与通信工程系 学号 姓名 指导教师 西南交通大学峨眉校区 2012 年5 月 20 日 课 程 设 计 任 务书 专业姓名学号 开题日期 2012 年 03 月 26 日完
  • 基于卷积神经网络的mnist手写体识别

    基于卷积神经网络的mnist手写体识别 1 卷积神经网络 1 1 什么是卷积神经网络 首先 卷积神经网络的概念 百度是这么给出解释的 卷积神经网络 Convolutional Neural Networks CNN 是一类包含卷积计算且具有
  • mysql中的视图知识点总结

    mysql中的视图指什么 答 视图 view 是一种有结构 有行有列 但是没结果 结构中不真实存放数据 的虚拟表 虚拟表的结构来源不是自己定义 而是从对应的基表中产生 视图的数据来源 视图的关键字是什么 答 view 视图的意义 答 1 视
  • Android google play 提交Apk审核被拒提示HostnameVerifier不安全

    提交到google play的应用被拒绝 提示如下 由于应用内使用了一些被发现漏洞的公开接口 一般是三方SDK 此次是由于友盟的SDK漏洞 升级修复版本重新提交审核即可
  • error: expected ‘{‘ before ‘;‘ token

    要求在分号 前加上前括号 原因1 在哪里确实漏了 原因2 要求把 等格式改为
  • 读取没表头的excel为dataframe,并添加虚拟列名

    model bankcode data pd DataFrame pd read excel model bankcodestr header None names 统一行别名称 统一行号 如图 实现了没有表头非让数据表 读取为datafr
  • 小程序扫二维码功能及测试实现过程

    进入微信开发者后台 进入开发管理中开发设置 添加小程序规则 下载校验文件 将校验文件放在域名更目录 放在更目录之后每个子文件夹都可以访问到 保存后 微信开发者工具调试就可以了
  • 如何删除gitee仓库的文件

    删除仓库文件跟上传是一样的 先把仓库clone下来 1 clone仓库 2 输入命令 git clone https gitee com Nick620 git test git 3 cd进入clone下来的仓库 并将gitee仓库上的文件
  • 攻防世界unserialize3

    又来了我的攻防世界 原题 攻防世界 怎么说呢 先看一下题目吧 看到题目的时候我第一反应是无从下手 之前说过博主是个刚起步的新手而且对php不是特别了解 这真的是难度一的题嘛 不过 在查找了很多资料后我逐渐理解了一切 也给大家分享一下并且记录
  • C# 使用OpenCV基本图像操作功能

    C 使用OpenCV OpenCV是一个开源的跨平台计算机视觉和机器学习软件库 可以运行在Linux Windows Android和Mac OS操作系统上 C 在上位机开发中比较常用 有些项目需要在上位机上加入一些机器视觉相关的功能 在下