在VScode使用C#并且调用opencv库的流程步骤

 更新时间:2026年06月08日 09:46:52   作者:咸鱼翻身小阿橙  
在这篇文章中,你将学习如何在VSCode中搭建C#开发环境,包括安装.NET SDK、C# DevKit等扩展,创建和运行C#项目,以及安装Emgu.CV和Emgu.CV.runtime.windows以支持OpenCV功能,需要的朋友可以参考下

我来带你一步步在 VS Code 里搭建出和图中一样的 C# 开发环境,并能成功运行代码。

一、准备工作:安装必备软件

1. 安装 .NET SDK

C# 代码运行需要 .NET SDK,这是微软官方的开发工具包:

前往官网下载:
.NET SDK

选择你系统对应的版本(Windows/macOS/Linux),推荐下载 长期支持(LTS) 版本。

安装完成后,打开 VS Code 的终端(Ctrl+ 快捷键),输入以下命令验证安装:

dotnet --version

如果能输出版本号,说明安装成功。

2. 安装 VS Code 扩展

打开 VS Code,在扩展市场(左侧方块图标)安装这两个扩展:

  • C# Dev Kit(微软官方的 C# 开发工具,包含语法高亮、调试、自动补全)
  • C#(OmniSharp 提供的语言支持,通常会和 C# Dev Kit 一起安装)

二、创建和运行第一个 C# 项目(和图中结构完全一致)

1. 创建项目文件夹

  1. 在电脑上新建一个文件夹,比如 OpenCVIntro(和图中的项目名一致)。
  2. 用 VS Code 打开这个文件夹:文件 → 打开文件夹

2. 在终端创建控制台项目

在 VS Code 终端中,输入以下命令创建一个控制台应用:

dotnet new console

执行后,VS Code 的文件资源管理器里会自动生成这些文件,和图中的结构完全对应:

  • Program.cs:你的主代码文件(图中打开的文件)
  • OpenCVIntro.csproj:项目配置文件(和图中文件名一致)
  • bin/obj/ 文件夹:编译生成的文件(和图中显示的一样)

3. 编写和运行代码

打开 Program.cs,把默认代码改成你图中的版本:

using System;

namespace ourNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}

点击 VS Code 顶部的 运行 → 启动调试(或按 F5),或在终端输入:

dotnet run

3.如果想使用插件直接安装 需要下载Code Runner插件

终端会输出 Hello, World!,说明代码成功运行了 ✅

三、常见问题和补充说明

为什么我的文件结构和图里不一样?
新版 .NET 6+ 的 dotnet new console 默认是顶级语句写法(没有 namespace 和 class),如果你想和图里的旧版结构完全一致,可以在创建项目时指定旧模板:

dotnet new console -lang C# -f net5.0

或者直接手动把代码改成图中的写法即可。

调试怎么配置?
第一次按 F5 运行时,VS Code 会自动生成 .vscode/launch.json.vscode/tasks.json 文件,不需要手动配置,直接就能调试。

四、后续拓展(如果你要做 OpenCV)

你图里的项目名是 OpenCVIntro,如果要在 C# 里用 OpenCV,可以通过 NuGet 安装包:

在终端输入:

dotnet add package OpenCvSharp4
dotnet add package OpenCvSharp4.runtime.win

之后就可以在代码里引用 OpenCV 命名空间,写图像处理代码了。

一句话:这是给你的 C# 项目安装「Emgu CV」NuGet 包,让你能在 C# 里直接用 OpenCV(图像处理/计算机视觉)功能。

我拆开讲清楚:

1.dotnet add package是什么?

这是 .NET 命令行工具(CLI)的命令:

dotnet add package 包名

作用:

  • 给**当前目录下的 C# 项目(.csproj)**添加一个外部库(NuGet 包)引用
  • 自动修改 .csproj,加上:
<PackageReference Include="Emgu.CV" Version="xxx" />
  • 自动下载并安装这个库到项目里

简单说:就是在命令行里装库,等同于 VS 里右键“管理 NuGet 包”→安装。

2.Emgu.CV是什么?

  • OpenCV:最著名的开源图像处理/计算机视觉库,底层是 C++ 写的
  • Emgu CV:把 OpenCV 封装成 .NET 库(C# 可用),叫「.NET wrapper」

有了它,你在 C# 里可以直接写:

using Emgu.CV;
using Emgu.CV.CvInvoke;

Mat img = CvInvoke.Imread("test.jpg");
CvInvoke.Imshow("window", img);

就能读图片、显示、人脸识别、边缘检测、摄像头处理……全部 OpenCV 功能。

3. 为什么你要执行这个命令?

因为你项目叫 OpenCVIntro,就是要做 C# + OpenCV 入门

只装 Emgu.CV 还不够(它只是“包装层”),Windows 下必须再装运行时

dotnet add package Emgu.CV.runtime.windows

否则会报“找不到 opencv 原生 dll”。

4. 总结(最简单理解)

  • dotnet add package安装 C# 库
  • Emgu.CVC# 版 OpenCV(图像处理/视觉)
  • 你执行它 = 给项目装上 OpenCV 能力

一句话:dotnet add package Emgu.CV.runtime.windows 是 Windows 专用的「原生运行时」包,专门带 OpenCV 的 .dll 文件;没有它,你的 C# 程序一用 Emgu.CV 就直接崩溃。

下面拆开讲,保证你彻底明白:

1. 先分清楚两个包

你装了两个东西:

1)Emgu.CV(核心托管库)

  • 是 C# 能看懂的「包装层」
  • 提供 using Emgu.CV;MatCvInvoke.Imread 这些类和方法
  • 但它本身不包含 OpenCV 底层代码(没有 .dll)

2)Emgu.CV.runtime.windows(Windows 原生运行时)

  • 里面是编译好的 OpenCV C++ 原生 DLL(x86/x64)
  • 比如:opencv_world480.dllcvextern.dll
  • 专门给 Windows 用,Linux/macOS 要装别的 runtime 包

2. 为什么必须装这个?(最关键)

Emgu.CV 工作原理:

C# 代码(Emgu.CV 托管层)
↓调用
OpenCV C++ 代码(在 .dll 里)

  • 只装 Emgu.CV → 只有“说明书”,没有“干活的工人”
  • 运行时会直接报:

无法加载 DLL“opencv_worldxxx.dll”

Emgu.CV.CvInvoke 的类型初始值设定项引发异常

  • 装了 runtime.windowsNuGet 自动把所有 OpenCV 原生 DLL 复制到输出目录,程序才能真正跑起来

3. 这条命令的意思

dotnet add package Emgu.CV.runtime.windows
  • dotnet add package:给当前项目安装 NuGet 包
  • Emgu.CV.runtime.windowsWindows 平台的 Emgu CV 原生运行时包

等价于:

我要在 Windows 上用 Emgu CV,请把所有必需的 OpenCV DLL 都装好。

4. 总结(超级精简版)

  • Emgu.CV = C# 接口(让你能写代码)
  • Emgu.CV.runtime.windows = Windows 版 OpenCV 底层 DLL(让代码能跑)
  • 缺一不可,否则运行报错、崩溃

要不要我给你一段最小示例代码,你直接复制就能测试图片读取+显示,确认两个包都装对了?

以上就是在VScode使用C#并且调用opencv库的流程步骤的详细内容,更多关于VScode使用C#并调用opencv库的资料请关注脚本之家其它相关文章!

相关文章

  • C#文件路径Path类介绍

    C#文件路径Path类介绍

    这篇文章介绍了C#中的文件路径Path类,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C# 系统全局的异常处理实现

    C# 系统全局的异常处理实现

    在C#应用程序中,异常可能在任何地方发生,本文主要介绍了C# 系统全局的异常处理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • C#删除文件夹里的所有文件的实现方案

    C#删除文件夹里的所有文件的实现方案

    你需要在 C# 中实现删除指定文件夹内所有文件的功能,下面会提供多种适配不同场景的实现方案,包含基础用法、安全用法及进阶需求,同时规避常见坑点,需要的朋友可以参考下
    2025-12-12
  • C#中foreach原理以及模拟的实现

    C#中foreach原理以及模拟的实现

    这篇文章主要介绍了C#中foreach原理以及模拟的实现方法,备有详尽的注释,便于深入理解C#原理,需要的朋友可以参考下
    2014-10-10
  • C#路径,文件,目录及IO常见操作汇总

    C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • C#多线程编程如何从用户线程到线程池的效能进化

    C#多线程编程如何从用户线程到线程池的效能进化

    C#作为一种功能强大的现代编程语言,提供了丰富的线程管理机制,以支持开发者应对各种并发场景,不同的线程类型在功能、生命周期和适用场景上各有侧重,本文将重点介绍C#中的五种主要线程类型,需要的朋友可以参考下
    2025-05-05
  • C#调用dll报错:无法加载dll,找不到指定模块的解决

    C#调用dll报错:无法加载dll,找不到指定模块的解决

    这篇文章主要介绍了C#调用dll报错:无法加载dll,找不到指定模块的解决问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • C# 三种方式实现Socket数据接收

    C# 三种方式实现Socket数据接收

    这篇文章主要给大家分享三种实现C# 实现Socket数据接收的方式,接下俩小编就来为大家详细介绍吧,需要的朋友可以参考一下
    2021-10-10
  • C#实现农历日历的方法

    C#实现农历日历的方法

    这篇文章主要介绍了C#实现农历日历的方法,详细分析了使用C#实现农历日历的完整步骤,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • C#中委托和事件的区别实例解析

    C#中委托和事件的区别实例解析

    这篇文章主要介绍了C#中委托和事件的区别,并分别以实例形式展示了通过委托执行方法与通过事件执行方法,以及相关的执行流程与原理分析,需要的朋友可以参考下
    2014-09-09

最新评论