EmguCV配置注意事项


本文介绍了EmguCV3.1.0与VisualStudio2013配置注意事项。


本文使用的操做系统为win七、64位。


1.前言
EmguCV库是C#开发平台经常使用基础库,其做用是在.NET 平台下对OpenCV 图像处理库的封装,使C#能够实现相似于C++对OpenCV同样的调用。笔者水平有限,在大体了解OpenCV的处理机制与功能后,发现没法使用C++作出项目须要的漂亮窗体界面,转而使用本身熟悉的C#, 为此欲借助EmguCV库实现本身的图像处理项目。


在使用EmguCV时,初始配置阶段就出现不小的问题,笔者折腾了两天,耗费不少精力才解决问题,并将心得整理成文。


2.配置方法
2.1安装EmguCV并配置环境变量
下载EmguCV库,安装(记住安装路径)并配置环境变量(EmguCV3.1.0不要求已经安装OpenCV,据称早期的EmguCV版本安装以前须要先安装OpenCV),在“Path”中输入“D:\emgucv\emgucv-windesktop 3.1.0.2504\bin\x64; ”,其中“D:\emgucv”是笔者EmguCV的安装路径。
2.2配置
新建一个C#窗体项目,右击“引用”目录,“添加引用”,点击“浏览”,找到EmguCV安装路径,打开“bin”文件夹,选择“Emgu.CV.UI.dll”、“Emgu.CV.UI.GL.dll”、“Emgu.CV.World.dll”,完成添加后,在“引用”目录下可见刚添加的库文件,如图2.1所示
 
图2.1 “引用”目录下添加完成


完成“引用”目录的添加后,还可向工具箱添加EmguCV使用UI控件,添加方法,点击“工具”—“选择工具箱”—“浏览”—选择安装路径—选择“Emgu.CV.UI.dll”


到此,安装配置完成。能够编写本身的程序调用库实现本身想要的图像处理功能了。


3.例程验证
注意:须要使用的命名空间有
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure; 
using Emgu.CV.CvEnum;


下面附验证代码,在窗体中添加一个Imagebox控件和button控件,默认名称便可,运行代码,若是出现Imagebox中出现颜色变换,即证实安装成功。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;


namespace test
{
    public partial class Form1 : Form
    {


        public Form1()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Image<Bgr, Byte> img1 = new Image<Bgr, Byte>(320, 240, new Bgr(0, 255, 0));
            imageBox1.Image = img1;//在ImageBox1控件中显示所建立好的图像。 
        }


    }
}


点击button1,图示为运行结果
 
图3.1 运行结果
4.可能存在的问题及解决办法 4.1 流程问题 VisualStudio2013是开发利器,若是编辑器里的关键字没有变色,说明开发环境没有找到你想要的库,前述配置出现问题,请仔细对照前述的配置方法,不要有遗漏,重点检查环境变量配置和“引用”目录下是否添加相关的库。 4.2类型初始化引起异常 此问题出现频率较高,运行时,提示TypeInitializationException错误或者类型初始值引起异常,网上不少人问这个问题,笔者在该问题上花了一天半时间查阅大量博客、论坛最终找到解决办法 解决办法大体有如下几种: (1)将bin目录下的dll库所有拷贝至工程项目的“debug”文件夹中; (2)下降.Net FrameWork版本的版本; (3)更改和完善环境变量,并重启计算机是更改生效。 使用上述办法,大部分时候可直接解决问题,笔者当时就是经过将.Net4.5更改为.Net4.0解决了问题。更改方法:右击项目名称—点击“属性”—“目标框架”—选择低一点的版本。注意版本不宜太低,下降一个版本便可。 后来笔者因为出差,须要在另外一台不经常使用的电脑上安装EmguCV,结果始终提示TypeInitializationException,用尽方法也不能解决。Stack Overflow上有我的也说遇到该问题,尝试了两天发现,将 “bin/x64”目录下的“cvextern.dll”复制到debug目录下可解决问题,可是也不知道到底为啥。而笔者尝试了仍是不行,甚至一气之下将全部库文件所有复制进去仍是不行。最后笔者将笔记本显卡等全部的硬件驱动所有更新了一遍,升级了计算机上安装的.NET版本,发现可使用了。笔者分析,新版本的EmguCV对硬件驱动有必定的要求,有可能该库使用了一些底层的驱动库,但该笔记本是六七年前的,好久没有更新过,因此才出现一些莫名其妙的问题。但具体缘由,尚不明确。因此若是网上将的办法试完仍是报错,能够考虑升级一下计算机自己。