测试环境:
win10 64位
vistual studio 2019
Emgu CV 4.6.0
安装文档参考:Download And Installation - Emgu CV: OpenCV in .NET (C#, VB, C++ and more)
Emgu CV简介(抄网上的):
OpenCV(Open Source Computer Vision Library)是一个(开源免费)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android、ios等操作系统上,它轻量级而且高效---由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的诸多通用算法。
EmguCV是OpenCV的一个跨平台的.Net封装,由于OpenCV是用C和C++编写的,Emgu用C#对其进行封装,允许用.Net语言来调用OpenCV函数,如C#、VB、VC++等,同时该封装也可以被编译到Mono平台和允许在Windows、Mac OS、Android、iPhone、iPad等多个平台上运行。
OpenCV官网:https://opencv.org/
EmguCV官网:http://www.emgu.com/wiki/index.php/Main_Page
1 安装Emgu CV 4.6.0,从github上下载:Release Emgu CV 4.6.0 Release · emgucv/emgucv · GitHub
双击运行,我这里右键以管理员运行,看日志输出像是提前文件一样,不像是安装
网上有博主说,win10的C盘有目录权限啥的,为了减少出错,我这里把C盘修改为E盘,如下图:
记住该安装目录,待会要在这里拷贝dll文件,然后一路下一步安装即可
安装完后,详细的文件结构如下图,我们需要关系的是libs目录
网上有说配置Path环境变量啥的,我发现Emgu CV 4.6.0解压出来的目录和CV3.x的目录结构不一样,个人认为是不用配置Path环境变量的,从官方的安装文档中(Download And Installation - Emgu CV: OpenCV in .NET (C#, VB, C++ and more))也没发现有配置环境变量的环节
2 新建.net framework控制台项目
2.1 .net framework框架选择4.7,上面的emgu cv安装包的dll是通过4.6.0.5131生成的
2 修改项目生成的目标平台,我的系统是64位的,所以选择x64,如果系统是32位的,则选x86
.net framework才需要选择平台,.net core则不需要,如下图说明:
2.3 先生成一下项目,然后打开前面Emgu安装目录:
E:\Emgu\emgucv-windesktop 4.6.0.5131
可以看到libs目录下有dll文件,展开libs目录,如下图:
把Emgu.CV.dll、Emgu.CV.Platform.NetFramework.dll和System.Runtime.InteropServices.RuntimeInformation.dll添加为项目引用
接着展开runtimes目录,如下图:
把win-x64目录的native目录下的文件全部拷贝到项目的运行目录Debug目录下
2.4 添加测试代码如下,并添加System.Drawing.dll和System.Windows.Form.dll引用
static void Main(string[] args)
{
//Create a 3 channel image of 400x200
using (Emgu.CV.Mat img = new Emgu.CV.Mat(200, 400, Emgu.CV.CvEnum.DepthType.Cv8U, 3))
{
img.SetTo(new Emgu.CV.Structure.Bgr(255, 0, 0).MCvScalar); // set it to Blue color
//Draw "Hello, world." on the image using the specific font
Emgu.CV.CvInvoke.PutText(
img,
"Hello, world",
new System.Drawing.Point(10, 80),
Emgu.CV.CvEnum.FontFace.HersheyComplex,
1.0,
new Emgu.CV.Structure.Bgr(0, 255, 0).MCvScalar);
//Show the image using ImageViewer from Emgu.CV.UI
Emgu.CV.UI.ImageViewer.Show(img, "Test Window");
}
}
2.3 生成并运行,发现无法加载对应的dll
System.IO.FileNotFoundException:“未能加载文件或程序集“System.Drawing.Common, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”或它的某一个依赖项。系统找不到指定的文件。”
解决方案是通过nuget安装对应的System.Drawing.Common,参考:【Emgu.CV】Emgu.CV.Example\OCR运行报错System.IO.FileNotFoundException:“未能加载文件或程序集“System.Drawing.Common_十年一梦实验室的博客-CSDN博客
再次运行,效果图如下图: