在Linux上使用OpenCvSharp的過程詳解
前言
OpenCV是一個(gè)基于Apache2.0許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。OpenCvSharp是一個(gè)OpenCV的 .Net wrapper,應(yīng)用最新的OpenCV庫開發(fā),使用習(xí)慣比EmguCV更接近原始的OpenCV,該庫采用LGPL發(fā)行,對(duì)商業(yè)應(yīng)用友好。
1. 項(xiàng)目環(huán)境
- 編碼環(huán)境:Visual Studio Code
- 程序框架:.NET 6.0
目前在Linux上使用C#語言官方提供了Visual Studio Code
平臺(tái),所以在此處我們演示使用Visual Studio Code
進(jìn)行演示。而代碼的運(yùn)行與配置使用dotnet
指令實(shí)現(xiàn)。
關(guān)于Visual Studio Code
以及.NET
的安裝方式可以參考一下官方教程:
在 Linux 上安裝 .NET:由于Linux系統(tǒng)環(huán)境類型較多,所以可以根據(jù)官方提供的教程并根據(jù)自己的系統(tǒng)安裝即可;
Visual Studio Code on Linux:大家可以根據(jù)自己的環(huán)境進(jìn)行安裝。
2. 創(chuàng)建控制臺(tái)項(xiàng)目
此處使用dotnet
指令創(chuàng)建新項(xiàng)目,在Visual Studio Code
的終端中輸入一下指令:
dotnet new console --framework net6.0 --use-program-main -o test_opencvsharp
如下圖所示,在終端中輸入以下指令后,會(huì)自動(dòng)創(chuàng)建新的項(xiàng)目以及項(xiàng)目文件夾。
在創(chuàng)建好項(xiàng)目后,我們使用vscode打開,輸入以下指令,如下圖所示:
test_opencvsharp code .
3. 添加 Nuget Package 程序包
OpenCvSharp4是一個(gè)可以跨平臺(tái)使用的程序包,并且官方也提供了編譯好的程序包,用戶可以根據(jù)自己的平臺(tái)進(jìn)行安裝。在Linux上,主要需要安裝一下兩個(gè)包,分別是OpenCvSharp4的官方程序包以及OpenCvSharp4的運(yùn)行依賴包。
dotnet add package OpenCvSharp4 dotnet add package OpenCvSharp4_.runtime.ubuntu.20.04-x64
依次輸入指令后輸出如下圖所示:
安裝完上面兩個(gè)安裝包后,項(xiàng)目的配置的文件中會(huì)增加下面兩個(gè)配置。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="OpenCvSharp4" Version="4.9.0.20240103" /> <PackageReference Include="OpenCvSharp4_.runtime.ubuntu.20.04-x64" Version="4.9.0.20240103" /> </ItemGroup> </Project>
接下來運(yùn)行dotnet run
,檢驗(yàn)項(xiàng)目中是否包含所需要的配置文件:OpenCvSharp.dll
、runtimes/ubuntu.20.04-x64/native/
。打開項(xiàng)目運(yùn)行生成的文件夾bin/{build_config}/{dotnet_version}/
,在本項(xiàng)目中是bin/Debug/net6.0/
文件夾,如下圖所示:
可以看出,在程序運(yùn)行后,安裝的程序包中所有項(xiàng)目都已經(jīng)加載到當(dāng)前項(xiàng)目中,如果出現(xiàn)缺失,就需要找到程序包位置,將該文件復(fù)制到指定路徑。
5. 安裝依賴項(xiàng)目
在上面的測試中,并為使用到安裝的OpenCvSharp4
,因此運(yùn)行并未出現(xiàn)其他錯(cuò)誤,如果主機(jī)電腦之前沒有安裝使用過OpenCV
,所以第一次使用需要配置依賴項(xiàng)目。
首先第一步檢查一下缺少什么依賴項(xiàng),在終端中輸入以下指令:
ldd libOpenCvSharpExtern.so
如上圖所示,經(jīng)過ldd
檢測后,發(fā)現(xiàn)存在未安裝的依賴,接下愛就是安裝相應(yīng)的依賴項(xiàng),首先是解決tesseract
缺少,在終端輸入以下指令:
sudo apt install tesseract-ocr
安裝完成后再進(jìn)行依賴項(xiàng)檢測,如下圖所示:
可以看出,經(jīng)過安裝后,該依賴項(xiàng)已經(jīng)可以檢測到,接下來就是安裝其他依賴項(xiàng),依次輸入以下指令即可:
sudo apt install libdc1394-dev sudo apt install libavcodec-dev sudo apt install libavformat-dev sudo apt install libswscale-dev sudo apt install libopenexr-dev
最后,安裝完成后,在進(jìn)行檢測,如下圖所示,可以看出,目前已經(jīng)成功檢測到所有依賴項(xiàng),程序就可以正常使用了。
4. 測試應(yīng)用
最后我們編寫項(xiàng)目代碼進(jìn)行測試,如下面代碼所示:
using System; using OpenCvSharp; namespace test_opencvsharp { internal class Program { static void Main(string[] args) { Mat image = Cv2.ImRead("image.jpg"); Mat image2=new Mat(); if (image!=null) { Console.WriteLine("srcImg is OK!"); } Console.WriteLine("圖像的寬度是:{0}",image.Rows); Console.WriteLine("圖像的高度是:{0}", image.Cols); Console.WriteLine("圖像的通道數(shù)是:{0}", image.Channels()); Cv2.ImShow("src", image); Cv2.CvtColor(image, image2, ColorConversionCodes.RGB2GRAY);//轉(zhuǎn)為灰度圖像 Cv2.ImShow("src1", image2); Cv2.WaitKey(0); Cv2.DestroyAllWindows();//銷毀所有窗口 } } }
項(xiàng)目代碼運(yùn)行后,最后呈現(xiàn)效果如下圖所示:
5. 總結(jié)
在本次項(xiàng)目中,我們成功實(shí)現(xiàn)了在Linux上使用OpenCvSharp,并成功配置了OpenCvSharp依賴庫,實(shí)現(xiàn)了在.NET 6.0環(huán)境下使用C#語言調(diào)用OpenCvSharp庫,實(shí)現(xiàn)的圖片數(shù)據(jù)的讀取以及圖像色彩轉(zhuǎn)換,并進(jìn)行了圖像展示。
到此這篇關(guān)于在Linux上使用OpenCvSharp的文章就介紹到這了,更多相關(guān)Linux使用OpenCvSharp內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.NET Core創(chuàng)建一個(gè)控制臺(tái)(Console)程序
這篇文章主要為大家詳細(xì)介紹了.NET Core如何創(chuàng)建一個(gè)控制臺(tái)程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04.NET RulesEngine(規(guī)則引擎)的使用詳解
這篇文章主要介紹了.NET RulesEngine(規(guī)則引擎)的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-05-05Ubuntu16.04系統(tǒng)配置.net core環(huán)境
本文給大家介紹的是在Ubuntu16.04系統(tǒng)配置.net core環(huán)境的方法,由于作者本身用的是WIN系統(tǒng),所以這次教程是在VMware中進(jìn)行的,希望大家能夠喜歡。2016-07-07c# 連接字符串?dāng)?shù)據(jù)庫服務(wù)器端口號(hào) .net狀態(tài)服務(wù)器端口號(hào)
正常的數(shù)據(jù)庫連接字符串配置,這是在MSSQL服務(wù)器端口是1433(默認(rèn))的情況下。2009-06-06C#下載文件(TransmitFile/WriteFile/流方式)實(shí)例介紹
C#下載文件想必很多業(yè)內(nèi)人士都不會(huì)陌生吧,C#下載文件方法很多,本文整理了一些,可供大家參考,感興趣的你可以研究下,或許本文所提供的知識(shí)點(diǎn)對(duì)你有所幫助2013-02-02介紹幾個(gè)ASP.NET中容易忽略但卻很重要的方法函數(shù)
介紹幾個(gè)ASP.NET中容易忽略但卻很重要的方法函數(shù)...2006-09-09