在VScode使用C#并且調(diào)用opencv庫的流程步驟
我來帶你一步步在 VS Code 里搭建出和圖中一樣的 C# 開發(fā)環(huán)境,并能成功運(yùn)行代碼。
一、準(zhǔn)備工作:安裝必備軟件
1. 安裝 .NET SDK
C# 代碼運(yùn)行需要 .NET SDK,這是微軟官方的開發(fā)工具包:
前往官網(wǎng)下載:
.NET SDK
選擇你系統(tǒng)對應(yīng)的版本(Windows/macOS/Linux),推薦下載 長期支持(LTS) 版本。
安裝完成后,打開 VS Code 的終端(Ctrl+ 快捷鍵),輸入以下命令驗(yàn)證安裝:
dotnet --version
如果能輸出版本號(hào),說明安裝成功。
2. 安裝 VS Code 擴(kuò)展
打開 VS Code,在擴(kuò)展市場(左側(cè)方塊圖標(biāo))安裝這兩個(gè)擴(kuò)展:
- C# Dev Kit(微軟官方的 C# 開發(fā)工具,包含語法高亮、調(diào)試、自動(dòng)補(bǔ)全)
- C#(OmniSharp 提供的語言支持,通常會(huì)和 C# Dev Kit 一起安裝)
二、創(chuàng)建和運(yùn)行第一個(gè) C# 項(xiàng)目(和圖中結(jié)構(gòu)完全一致)
1. 創(chuàng)建項(xiàng)目文件夾
- 在電腦上新建一個(gè)文件夾,比如
OpenCVIntro(和圖中的項(xiàng)目名一致)。 - 用 VS Code 打開這個(gè)文件夾:
文件 → 打開文件夾。
2. 在終端創(chuàng)建控制臺(tái)項(xiàng)目
在 VS Code 終端中,輸入以下命令創(chuàng)建一個(gè)控制臺(tái)應(yīng)用:
dotnet new console
執(zhí)行后,VS Code 的文件資源管理器里會(huì)自動(dòng)生成這些文件,和圖中的結(jié)構(gòu)完全對應(yīng):
Program.cs:你的主代碼文件(圖中打開的文件)OpenCVIntro.csproj:項(xiàng)目配置文件(和圖中文件名一致)bin/和obj/文件夾:編譯生成的文件(和圖中顯示的一樣)
3. 編寫和運(yùn)行代碼
打開 Program.cs,把默認(rèn)代碼改成你圖中的版本:
using System;
namespace ourNamespace
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
點(diǎn)擊 VS Code 頂部的 運(yùn)行 → 啟動(dòng)調(diào)試(或按 F5),或在終端輸入:
dotnet run
3.如果想使用插件直接安裝 需要下載Code Runner插件
終端會(huì)輸出 Hello, World!,說明代碼成功運(yùn)行了 ?
三、常見問題和補(bǔ)充說明
為什么我的文件結(jié)構(gòu)和圖里不一樣?
新版 .NET 6+ 的 dotnet new console 默認(rèn)是頂級(jí)語句寫法(沒有 namespace 和 class),如果你想和圖里的舊版結(jié)構(gòu)完全一致,可以在創(chuàng)建項(xiàng)目時(shí)指定舊模板:
dotnet new console -lang C# -f net5.0
或者直接手動(dòng)把代碼改成圖中的寫法即可。
調(diào)試怎么配置?
第一次按 F5 運(yùn)行時(shí),VS Code 會(huì)自動(dòng)生成 .vscode/launch.json 和 .vscode/tasks.json 文件,不需要手動(dòng)配置,直接就能調(diào)試。
四、后續(xù)拓展(如果你要做 OpenCV)
你圖里的項(xiàng)目名是 OpenCVIntro,如果要在 C# 里用 OpenCV,可以通過 NuGet 安裝包:
在終端輸入:
dotnet add package OpenCvSharp4 dotnet add package OpenCvSharp4.runtime.win
之后就可以在代碼里引用 OpenCV 命名空間,寫圖像處理代碼了。
一句話:這是給你的 C# 項(xiàng)目安裝「Emgu CV」NuGet 包,讓你能在 C# 里直接用 OpenCV(圖像處理/計(jì)算機(jī)視覺)功能。
我拆開講清楚:
1.dotnet add package是什么?
這是 .NET 命令行工具(CLI)的命令:
dotnet add package 包名
作用:
- 給**當(dāng)前目錄下的 C# 項(xiàng)目(.csproj)**添加一個(gè)外部庫(NuGet 包)引用
- 自動(dòng)修改
.csproj,加上:
<PackageReference Include="Emgu.CV" Version="xxx" />
- 自動(dòng)下載并安裝這個(gè)庫到項(xiàng)目里
簡單說:就是在命令行里裝庫,等同于 VS 里右鍵“管理 NuGet 包”→安裝。
2.Emgu.CV是什么?
- OpenCV:最著名的開源圖像處理/計(jì)算機(jī)視覺庫,底層是 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);
就能讀圖片、顯示、人臉識(shí)別、邊緣檢測、攝像頭處理……全部 OpenCV 功能。
3. 為什么你要執(zhí)行這個(gè)命令?
因?yàn)槟沩?xiàng)目叫 OpenCVIntro,就是要做 C# + OpenCV 入門。
只裝 Emgu.CV 還不夠(它只是“包裝層”),Windows 下必須再裝運(yùn)行時(shí):
dotnet add package Emgu.CV.runtime.windows
否則會(huì)報(bào)“找不到 opencv 原生 dll”。
4. 總結(jié)(最簡單理解)
dotnet add package→ 安裝 C# 庫Emgu.CV→ C# 版 OpenCV(圖像處理/視覺)- 你執(zhí)行它 = 給項(xiàng)目裝上 OpenCV 能力
一句話:dotnet add package Emgu.CV.runtime.windows 是 Windows 專用的「原生運(yùn)行時(shí)」包,專門帶 OpenCV 的 .dll 文件;沒有它,你的 C# 程序一用 Emgu.CV 就直接崩潰。
下面拆開講,保證你徹底明白:
1. 先分清楚兩個(gè)包
你裝了兩個(gè)東西:
1)Emgu.CV(核心托管庫)
- 是 C# 能看懂的「包裝層」
- 提供
using Emgu.CV;、Mat、CvInvoke.Imread這些類和方法 - 但它本身不包含 OpenCV 底層代碼(沒有 .dll)
2)Emgu.CV.runtime.windows(Windows 原生運(yùn)行時(shí))
- 里面是編譯好的 OpenCV C++ 原生 DLL(x86/x64)
- 比如:
opencv_world480.dll、cvextern.dll等 - 專門給 Windows 用,Linux/macOS 要裝別的 runtime 包
2. 為什么必須裝這個(gè)?(最關(guān)鍵)
Emgu.CV 工作原理:
C# 代碼(Emgu.CV 托管層)
↓調(diào)用
OpenCV C++ 代碼(在 .dll 里)
- 只裝
Emgu.CV→ 只有“說明書”,沒有“干活的工人” - 運(yùn)行時(shí)會(huì)直接報(bào):
無法加載 DLL“opencv_worldxxx.dll”
或
Emgu.CV.CvInvoke 的類型初始值設(shè)定項(xiàng)引發(fā)異常
- 裝了
runtime.windows→ NuGet 自動(dòng)把所有 OpenCV 原生 DLL 復(fù)制到輸出目錄,程序才能真正跑起來
3. 這條命令的意思
dotnet add package Emgu.CV.runtime.windows
dotnet add package:給當(dāng)前項(xiàng)目安裝 NuGet 包Emgu.CV.runtime.windows:Windows 平臺(tái)的 Emgu CV 原生運(yùn)行時(shí)包
等價(jià)于:
我要在 Windows 上用 Emgu CV,請把所有必需的 OpenCV DLL 都裝好。
4. 總結(jié)(超級(jí)精簡版)
- Emgu.CV = C# 接口(讓你能寫代碼)
- Emgu.CV.runtime.windows = Windows 版 OpenCV 底層 DLL(讓代碼能跑)
- 缺一不可,否則運(yùn)行報(bào)錯(cuò)、崩潰
要不要我給你一段最小示例代碼,你直接復(fù)制就能測試圖片讀取+顯示,確認(rèn)兩個(gè)包都裝對了?
以上就是在VScode使用C#并且調(diào)用opencv庫的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于VScode使用C#并調(diào)用opencv庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C# 系統(tǒng)全局的異常處理實(shí)現(xiàn)
在C#應(yīng)用程序中,異??赡茉谌魏蔚胤桨l(fā)生,本文主要介紹了C# 系統(tǒng)全局的異常處理實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
C#中foreach原理以及模擬的實(shí)現(xiàn)
這篇文章主要介紹了C#中foreach原理以及模擬的實(shí)現(xiàn)方法,備有詳盡的注釋,便于深入理解C#原理,需要的朋友可以參考下2014-10-10
C#調(diào)用dll報(bào)錯(cuò):無法加載dll,找不到指定模塊的解決
這篇文章主要介紹了C#調(diào)用dll報(bào)錯(cuò):無法加載dll,找不到指定模塊的解決問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
C# 三種方式實(shí)現(xiàn)Socket數(shù)據(jù)接收
這篇文章主要給大家分享三種實(shí)現(xiàn)C# 實(shí)現(xiàn)Socket數(shù)據(jù)接收的方式,接下倆小編就來為大家詳細(xì)介紹吧,需要的朋友可以參考一下2021-10-10

