位置:首页 > C# > VSCode中使用C#调用OpenCV库的流程与配置步骤

VSCode中使用C#调用OpenCV库的流程与配置步骤

时间:2026-08-18  |  作者:白桃企划师  |  阅读:0

在 VS Code 里搭建一套能跑 C# 的开发环境,并且把 OpenCV 库也用起来,这个目标听起来复杂,实际操作其实很清晰。下面按步骤来,保证每一步都跟图上结构对上。

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

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

1. 安装 .NET SDK

C# 代码能跑起来,靠的就是 .NET SDK。这是微软官方的开发工具包。

去官网下载对应系统版本(Windows/macOS/Linux)。推荐选长期支持(LTS)版本,更稳定,也更省事。

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

dotnet --version

如果能显示版本号,就说明 SDK 已安装成功。

2. 安装 VS Code 扩展

打开 VS Code 扩展市场,也就是左侧方块图标位置。安装下面两个扩展即可:

  • C# Dev Kit:微软官方出品,支持语法高亮、调试、自动补全
  • C#:OmniSharp 的语言支持,通常会跟着 C# Dev Kit 一起安装

二、创建和运行第一个 C# 项目

1. 创建项目文件夹

  • 在电脑上新建一个文件夹,比如叫 OpenCVIntro,与图里的项目名保持一致
  • 用 VS Code 打开这个文件夹:文件 → 打开文件夹

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

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

dotnet new console

执行完成后,文件资源管理器里会自动生成以下内容,跟图中结构一致:

  • 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

如果你想用插件快速运行,安装 Code Runner 插件即可。

终端输出 Hello, World!,说明代码已经跑通。

三、常见问题和补充说明

1. 为什么我的文件结构和图里不一样?

新版 .NET 6+ 的 dotnet new console 默认使用顶级语句写法,所以没有 namespace 和 class。

如果你想和图里的旧版结构完全一致,可以在创建项目时指定旧模板:

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

或者更简单一点,手动把代码改成图中的写法即可。

2. 调试怎么配置?

第一次按 F5 运行时,VS Code 会自动生成 .vscode/launch.json.vscode/tasks.json

因此不需要手动配置,直接就能开始调试。

四、后续拓展:在 C# 里调用 OpenCV

既然项目名是 OpenCVIntro,下一步自然就是在 C# 中调用 OpenCV。

通过 NuGet 安装包,是最直接的方式。先在终端输入:

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

安装完成后,就可以在代码中引用 OpenCV 命名空间,开始写图像处理代码。

如果你想用的是 Emgu CV,也就是另一种常见的 .NET OpenCV 封装,流程也类似。下面分开说明。

1. dotnet add package 是什么?

这是 .NET 命令行工具(CLI)的命令,用来给当前目录下的 C# 项目(.csproj)添加一个外部库(NuGet 包)引用。

它会自动修改 .csproj 文件,加入类似下面的内容:

然后下载并安装这个库。

简单说,它就是在命令行里装库,和 Visual Studio 里右键“管理 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);

这样就能完成读图、显示,以及后续的人脸识别、边缘检测、摄像头处理等操作。

3. 为什么必须装运行时包?

只装 Emgu.CV 不够。它只是“包装层”,Windows 下必须再装原生运行时

dotnet add package Emgu.CV.runtime.windows

否则会报错,比如“找不到 opencv 原生 dll”,或者“Emgu.CV.CvInvoke 的类型初始值设定项引发异常”。

这两个包的分工不同:

  • Emgu.CV(核心托管库):C# 能直接调用的包装层,提供 using Emgu.CV;MatCvInvoke.Imread 等类和方法。但它本身不包含 OpenCV 底层代码(没有 .dll)
  • Emgu.CV.runtime.windows(Windows 原生运行时):里面是编译好的 OpenCV C++ 原生 DLL(x86/x64),比如 opencv_world480.dllcvextern.dll 等。专为 Windows 提供,Linux/macOS 需要安装别的 runtime 包

工作原理可以理解为:

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

只装 Emgu.CV,相当于只有说明书,没有真正干活的工人,程序运行时就会崩。

装上 runtime.windows 后,NuGet 会自动把所有原生 DLL 复制到输出目录,程序才能真正跑起来。

4. 总结

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

下面给出一段最小示例代码,可以直接复制测试图片读取和显示,用来确认两个包都装对了:

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

static void Main()
{
    Mat img = CvInvoke.Imread("test.jpg");
    CvInvoke.Imshow("Test", img);
    CvInvoke.WaitKey(0);
}

test.jpg 放到项目目录下,运行即可。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多