【OpenCV】在 Mac OS 上使用 EmguCV
前言
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。 Emgu CV是OpenCV图像处理库的跨平台 .Net 包装器。允许从 .NET 兼容语言调用OpenCV函数。但是网上目前关于在Mac OS上使用EmguCV的教程较少,而我后续推出的OpenVINO C# API项目将支持Mac OS系统,为了大家后续能够使用,特出一期教程来演示一下Mac OS上使用EmguCV。
1. 项目环境
- 编码环境:Visual Studio Code
- 程序框架:.NET 6.0
目前在Mac OS上使用C#语言官方提供了编译Visual Studio for Mac
,但是根据官方发布的通知后续将不再支持该软件更新,后续将全部转移到Visual Studio Code
平台,所以在此处我们演示使用Visual Studio Code
进行演示。而代码的运行与配置使用dotnet
指令实现。
关于Visual Studio Code
以及.NET
的安装方式可以参考一下官方教程:
在 macOS 上安装 .NET、Visual Studio Code on macOS。
2. 创建控制台项目
此处使用dotnet
指令创建新项目,在Visual Studio Code
的终端中输入一下指令:
dotnet new console --framework net6.0 --use-program-main -o test_emgucv
如下图所示,在终端中输入以下指令后,会自动创建新的项目以及项目文件夹。
在创建好项目后,我们进行一下项目测试,依次输入以下指令,最后输出如下图所示:
cd test_emgucv
dotnet run
3. 添加 Nuget Package 程序包
Emgu CV是一个可以跨平台使用的程序包,并且官方也提供了编译好的程序包,用户可以根据自己的平台进行安装。在Mac OS上,主要需要安装一下两个包,分别是Emgu.CV的官方程序包以及Emgu.CV的运行依赖包。
dotnet add package Emgu.CV
dotnet add package Emgu.CV.runtime.mini.macos
安装完上面两个安装包后,项目的配置的文件中会增加下面两个配置。
<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>
接下来运行dotnet run
,检验项目中是否包含所需要的配置文件:Emgu.CV.dll
、runtimes/osx/native/libcvextern.dylib
。打开项目运行生成的文件夹bin/{build_config}/{dotnet_version}/
,在本项目中是bin/Debug/net6.0/
文件夹,如下图所示:
通过该图可以看出,在本项目中只有Emgu.CV.dll
文件,并没有runtimes/osx/native/libcvextern.dylib
文件,因该文件需要我们自行配置。首先是需要找到该文件,该文件主要是在Emgu.CV.runtime.mini.macos
程序包中,如下图所示:
接下来就是创建runtimes/osx/native/
文件夹,然后将该文件放在该文件夹下即可。如下图所示:
3. 测试应用
最后我们编写项目代码进行测试,如下面代码所示:
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("图像的通道数是:{0}", image.NumberOfChannels);
CvInvoke.Imshow("src", image);
CvInvoke.CvtColor(image, image2, ColorConversion.Bgr2Gray);//转为灰度图像
CvInvoke.Imshow("src1", image2);
CvInvoke.WaitKey(0);
CvInvoke.DestroyAllWindows();//销毁所有窗口
}
}
}
项目代码运行后,最后呈现效果如下图所示:
4. 总结
在本次项目中,我们成功实现了在Mac OS上使用EmguCV,并成功配置了EmguCV依赖库,实现了在.NET 6.0环境下使用C#语言调用EmguCV库,实现的图片数据的读取以及图像色彩转换,并进行了图像展示。
【OpenCV】在 Mac OS 上使用 EmguCV的更多相关文章
- 在 Mac OS 上使用 TypeScript 编写 ASP.NET Core 1.0 应用
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 如何将NTFS格式的移动硬盘挂接到Mac OS上进行读写(Read/Write)操作
现在硬盘便宜,很多同学都有移动硬盘,如果你同时使用Windows与Mac OS的话,移动硬盘最好不要使用NTFS文件系统,否则在Mac OS上,你只能读你的移动硬盘,不能写. 但是实际上的情况是,移动 ...
- Mac OS 上设置 JAVA_HOME
Mac OS 上设置 JAVA_HOME 原文链接:http://han.guokai.blog.163.com/blog/static/136718271201301183938165/ 由于需要, ...
- 在 Mac OS 上编译 FFmpeg
本文转自:在 Mac OS 上编译 FFmpeg | www.samirchen.com 安装 Xcode 和 Command Line Tools 从 App Store 上安装 Xcode,并确保 ...
- 转-在Mac OS上搭建Python的开发环境
在Mac OS上搭建Python的开发环境 本文转载自:http://www.jb51.net/article/76931.htm 一. 安装python mac系统其实自带了一个python的执 ...
- 在 Mac OS 上编译 OBS
本文转自:在 Mac OS 上编译 OBS | www.samirchen.com 安装环境 第一步,做准备工作,安装编译 OBS 所需要的环境,流程如下: // 给当前用户添加 /usr/local ...
- 在Mac OS上安装Vagrant和Docker的教程
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/128.html?1455808640 当听到很多人在说Docker是多么多 ...
- 在Mac OS上搭建本地服务器
我们在做网络编程的时候一般是需要有网络环境的,这样可以边写边测试达到很高的效率.但有些时候我们由于很多原因我们的电脑无法连接到网络,这时就会感觉很不自在,所以今天在这里教大家怎么用自己电脑作服务器. ...
- 【Xamarin 在Mac OS 上的部署安装环境】
******************没用Mac 的机子,也只能靠虚拟机了**********1 安装VMware 10 从网上下载即可2 下载MAC OS 10.9.5的安装镜像,网上有很多,最好使用 ...
随机推荐
- Teamcenter RAC 开发之《Excel模版导出》
背景 在做 Teamcenter RAC客制化表单后,TMD肯定有一个需求要导出表单,毕竟所谓的客制化表单就是从纸质表单中出来的,那么写代码必不可少......... 那么问题来了,对于一个Excel ...
- 谱图论:Laplacian二次型和Markov转移算子
以下部分是我学习CMU 15-751: TCS Toolkit的课堂笔记.由于只是个人笔记,因此许多地方在推导上可能不那么严谨,还望理论大佬多多包涵. 1 问题定义 1.1 无向图\(G\) 在本文中 ...
- ReactPortals传送门
ReactPortals传送门 React Portals提供了一种将子节点渲染到父组件以外的DOM节点的解决方案,即允许将JSX作为children渲染至DOM的不同部分,最常见用例是子组件需要从视 ...
- 《美英报刊阅读教程(中级精选本)(第五版)》 ISBN: 9787301306864
作者: 端木义万 著 出版社: 北京大学出版社 出版时间: 2019-09 版次: 7 ISBN: 9787301306864 定价: 69.00 装帧: 平装 开本: 16开 纸张: ...
- jmeter生成HTML性能测试报告(非GUI的命令)
非GUI的命令(在cmd执行即可 不需要打开jmeter) 使用命令:jmeter -n -t [jmx file] -l [jtl file] -e -o [report path ...
- 2023_10_10_MYSQL_DAY_02_课后题
2023_10_10_MYSQL_DAY_02_课后题 #06章1--7题 #1. 查询10号部门所有员工的员工姓名,员工工资,工资级别. SELECT e.ename 员工姓名,e.`sal` 员工 ...
- CF1336A
题目简化和分析: 明确一点这是一棵树. 为了保证每个工业城市的设置效益最大,应该设在最深的节点. 从深到浅,可以使用优先队列去实现. 设置一个的价值为 \(dep_u-siz_u-1\). 关于作者一 ...
- 基于GPS定位和人脸识别的作业识别管理系统
一.技术参数 mysql5.5 asp.net jquery 高德地图api 百度人脸识别api 二.功能简介 实现简单的施工项目管理,包括项目地点,工期,名称,编号等 实现作业人员的档案信息管理,包 ...
- MIT协议原文及中文翻译
MIT协议原文及翻译 参考链接 原文: Copyright ( C ) Permission is hereby granted, free of charge, to any person obta ...
- c#中适配器模式详解
基础介绍: 想象这样一个场景,原项目中接口返回的数据是XML格式的数据,但现在来了一个新客户,它期望接口返回的数据类型为json格式的. 想要实现要么就是改原有接口,但这样就违反了开闭原则,容 ...