首页 > 编程语言 >【C#】搭建环境之CSharp+OpenCV

【C#】搭建环境之CSharp+OpenCV

时间:2024-10-24 15:20:22浏览次数:9  
标签:控件 imgName C# OpenCvSharp4 OpenCV CSharp bitmap 图片

在这里插入图片描述
在我们使用C#编程中,对图片处理时会用到OpenCV库,以及其他视觉厂商提供的封装库,这里因为OpenCV是开源库,所以在VS资源里可以直接安装使用,这里简单说明一下搭建的步骤及实现效果,留存。

1. 项目创建

1.1 创建Windows应用窗体

打开vs2022程序,我电脑安装的是这个版本,但对本次说明来说没啥影响。
创建Windows应用窗体。
在这里插入图片描述

1.2 添加控件

在已经创建的窗体中,添加picturebox控件和button控件,用于控制图像显示的效果。
在这里插入图片描述

1.3 添加引用

在右侧“解决方案资源管理器”中,右键项目,从菜单中选择“管理NuGet程序包”,打开程序包安装页面。
在这里插入图片描述
在“浏览”页搜索 OpenCvSharp4,
可以选择安装
OpenCvSharp4 + OpenCvSharp4.Extensions + OpenCvSharp4.runtime。
也可以选择安装
OpenCvSharp4.Windows + OpenCvSharp4.Extensions(我选择此项)。
在这里插入图片描述

2 编写代码

在已经创建好的项目中,进入button控件的click事件,开始编写代码。如下:

 private void Button1_Click(object sender, EventArgs e)
        {
            string imgName = "";
            OpenFileDialog openFileDialog1 = new OpenFileDialog()
            {
                Filter = "图片(*.jpg/*.png/*.gif/*.bmp)|*.jpg;*.png;*.gif;*.bmp"
            };
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                imgName = openFileDialog1.FileName;
                Mat mat = new Mat(imgName, ImreadModes.Unchanged);
                // mat 转 bitmap
                Bitmap bitmap = BitmapConverter.ToBitmap(mat);
                this.PictureBoxFace.Image = bitmap;
            }
            else
            {
                MessageBox.Show("读取图片失败!");
            }
        }

这里只是简单的加载一下图片资源,验证OpenCV库是否好用。

3 编译实现

代码完善之后,开始编译程序,这里就不介绍编译步骤了。
在弹出的窗口对话框中选择要显示的图片。
在这里插入图片描述
在应用窗口中显示选择的图片。
在这里插入图片描述

标签:控件,imgName,C#,OpenCvSharp4,OpenCV,CSharp,bitmap,图片
From: https://blog.csdn.net/kewaqi618/article/details/143209515

相关文章

  • 全网最详细K8S部署Nacos集群
    K8S部署Nacos集群简介Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台,特别设计用于简化云原生应用的构建与管理。Nacos的核心特性包括:服务发现与健康检查:Nacos支持DNS与RPC方式的服务发现机制,能够自动发现、路由及负载均衡微服务。它通过健康检查机制监......
  • Opensearch集群部署【docker、服务器、Helm多种部署方式】
    操作系统兼容性我们建议在RedHatEnterpriseLinux(RHEL)或使用systemd的基于Debian的Linux发行版上安装OpenSearch,例如CentOS、AmazonLinux2和UbuntuLong-TermSupport(LTS)。OpenSearch应该适用于大多数Linux发行版,但我们只测试了少数几个。对于任何......
  • elasticsearch安装head插件
    当我们安装elasticsearch时,需要注意一下问题优化配置以下是如何通过jvm.options文件设置堆大小的示例:-Xms2g-Xmx2g将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等设置Xmx为不超过物理RAM的50%,以确保有足够的物理RAM用于内核文件系统缓存但是不能超过32g,超过32gjava......
  • opensearch单机版安装部署
    操作系统兼容性我们建议在RedHatEnterpriseLinux(RHEL)或使用systemd的基于Debian的Linux发行版上安装OpenSearch,例如CentOS、AmazonLinux2和UbuntuLong-TermSupport(LTS)。OpenSearch应该适用于大多数Linux发行版,但我们只测试了少数几个。对于任何......
  • Go 语言中的 切片 --slice
    为了更好地理解Go语言中的切片(slice),我们可以将它与C++中的数组或容器(如std::vector)进行比较,但要注意的是,它们之间有一些关键的区别。让我们逐步将Go的切片与C++中的概念进行对应:1.数组vs切片在C++中,数组(array)是一种固定大小的数据结构,大小必须在编译时确定,并且......
  • 基于python的金融分析与风险管理-代码块-c8-股票投资组合
    绘图importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt##Matplotlib是一个用于绘制数据可视化的Python库。它提供了一种类似于Matlab的绘图接口,可以用于生成各种静态、动态、交互式的图形,包括线图、散点图、柱状图、饼图、等高线图等。###Matplotlib......
  • chrome 控制台console 调用vue页面的方法--来自chatgpt的回答
    问题二:vue2的项目中chrome控制台输入$0.vue会输出什么在Vue2项目中,如果你在Chrome控制台中输入$0.__vue__,这个命令会返回$0当前选中的DOM元素对应的Vue实例。解释:$0:代表ChromeDevTools中当前选中的DOM元素。.vue:这是Vue2中的一个内部属性,它持有与该D......
  • 计算机视觉库supervision学习-day(2)-Detections类
    对于day-1,算是一个简要的supervision的使用方法,但对于大部分内容本人还是一知半解,因此我查看官方文档,对照着官方文档来进行supervision的详细学习,并对其中一些重要的方法和属性进行解释DetectionsandSegmentation-检测与分割一、Detections类supervision是这样描述Detection......
  • CF1800E2. Unforgivable Curse (hard version) 题解 并查集
    题目链接:https://codeforces.com/contest/1800/problem/E2视频讲解:https://www.bilibili.com/video/BV1tZ1FYPELp?p=2把下标\(i\)对应到图中编号为\(i\)的节点。节点\(i\)和\(i+k\)之间连一条边,节点\(i\)和\(i+k+1\)之间也连一条边。同一个连通块里的节点对应的字......
  • css3实现文字线性渐变,css3实现背景渐变
    <divclass='who1'>我是线性渐变文字我是线性渐变文字我是线性渐变文字我</div><divclass='who2'>我是背景渐变我是背景渐变我是背景渐变我是背景渐变我</div>.who1{width:400px;background:linear-gradient(toright,#ff0000,#ffff00);/*设置渐变的方向从左......