【OpenCV】在 Mac OS 上使用 EmguCV
前言OpenCV是一個(gè)基于Apache2.0許可(開源)發(fā)行的跨平臺計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。 Emgu CV是OpenCV圖像處理庫的跨平臺 .Net 包裝器。允許從 .NET 兼容語言調(diào)用OpenCV函數(shù)。但是網(wǎng)上目前關(guān)于在Mac OS上使用EmguCV的教程較少,而我后續(xù)推出的OpenVINO C# API項(xiàng)目將支持Mac OS系統(tǒng),為了大家后續(xù)能夠使用,特出一期教程來演示一下Mac OS上使用EmguCV。
1. 項(xiàng)目環(huán)境
- 編碼環(huán)境:Visual Studio Code
- 程序框架:.NET 6.0
? 目前在Mac OS上使用C#語言官方提供了編譯Visual Studio for Mac,但是根據(jù)官方發(fā)布的通知后續(xù)將不再支持該軟件更新,后續(xù)將全部轉(zhuǎn)移到Visual Studio Code平臺,所以在此處我們演示使用Visual Studio Code進(jìn)行演示。而代碼的運(yùn)行與配置使用dotnet指令實(shí)現(xiàn)。
? 關(guān)于Visual Studio Code以及.NET的安裝方式可以參考一下官方教程:
在 macOS 上安裝 .NET、Visual Studio Code on macOS。
2. 創(chuàng)建控制臺項(xiàng)目
? 此處使用dotnet指令創(chuàng)建新項(xiàng)目,在Visual Studio Code的終端中輸入一下指令:
dotnet new console --framework net6.0 --use-program-main -o test_emgucv
? 如下圖所示,在終端中輸入以下指令后,會自動(dòng)創(chuàng)建新的項(xiàng)目以及項(xiàng)目文件夾。
? 在創(chuàng)建好項(xiàng)目后,我們進(jìn)行一下項(xiàng)目測試,依次輸入以下指令,最后輸出如下圖所示:
cd test_emgucv
dotnet run
3. 添加 Nuget Package 程序包
? Emgu CV是一個(gè)可以跨平臺使用的程序包,并且官方也提供了編譯好的程序包,用戶可以根據(jù)自己的平臺進(jìn)行安裝。在Mac OS上,主要需要安裝一下兩個(gè)包,分別是Emgu.CV的官方程序包以及Emgu.CV的運(yùn)行依賴包。
dotnet add package Emgu.CV
dotnet add package Emgu.CV.runtime.mini.macos
? 安裝完上面兩個(gè)安裝包后,項(xiàng)目的配置的文件中會增加下面兩個(gè)配置。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Emgu.CV" Version="4.8.1.5350" />
<PackageReference Include="Emgu.CV.runtime.mini.macos" Version="4.8.1.5350" />
</ItemGroup>
</Project>
? 接下來運(yùn)行dotnet run,檢驗(yàn)項(xiàng)目中是否包含所需要的配置文件:Emgu.CV.dll、runtimes/osx/native/libcvextern.dylib。打開項(xiàng)目運(yùn)行生成的文件夾bin/{build_config}/{dotnet_version}/,在本項(xiàng)目中是bin/Debug/net6.0/文件夾,如下圖所示:
? 通過該圖可以看出,在本項(xiàng)目中只有Emgu.CV.dll文件,并沒有runtimes/osx/native/libcvextern.dylib文件,因該文件需要我們自行配置。首先是需要找到該文件,該文件主要是在Emgu.CV.runtime.mini.macos程序包中,如下圖所示:
? 接下來就是創(chuàng)建runtimes/osx/native/文件夾,然后將該文件放在該文件夾下即可。如下圖所示:
3. 測試應(yīng)用
? 最后我們編寫項(xiàng)目代碼進(jìn)行測試,如下面代碼所示:
using System;
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
namespace test_emgucv
{
internal class Program
{
static void Main(string[] args)
{
Mat image = CvInvoke.Imread("image.jpg");
Mat image2=new Mat();
if (!image.IsEmpty)
{
Console.WriteLine("srcImg is OK!");
}
Console.WriteLine("圖像的寬度是:{0}",image.Rows);
Console.WriteLine("圖像的高度是:{0}", image.Cols);
Console.WriteLine("圖像的通道數(shù)是:{0}", image.NumberOfChannels);
CvInvoke.Imshow("src", image);
CvInvoke.CvtColor(image, image2, ColorConversion.Bgr2Gray);//轉(zhuǎn)為灰度圖像
CvInvoke.Imshow("src1", image2);
CvInvoke.WaitKey(0);
CvInvoke.DestroyAllWindows();//銷毀所有窗口
}
}
}
? 項(xiàng)目代碼運(yùn)行后,最后呈現(xiàn)效果如下圖所示:
4. 總結(jié)
? 在本次項(xiàng)目中,我們成功實(shí)現(xiàn)了在Mac OS上使用EmguCV,并成功配置了EmguCV依賴庫,實(shí)現(xiàn)了在.NET 6.0環(huán)境下使用C#語言調(diào)用EmguCV庫,實(shí)現(xiàn)的圖片數(shù)據(jù)的讀取以及圖像色彩轉(zhuǎn)換,并進(jìn)行了圖像展示。
總結(jié)
以上是生活随笔為你收集整理的【OpenCV】在 Mac OS 上使用 EmguCV的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3 分钟为英语学习神器 Anki 部署一
- 下一篇: C++ 动态库热加载