Emgu CV的配置以及在VS 2012中进行图像处理的步骤和实例
说明:
1、所使用的Emgu CV是目前的最新版本3.1.0,下载链接为:https://sourceforge.net/projects/emgucv/files/emgucv/3.1.0/(我选的下载量最多的那个版本,40.3MB)
2、经测试,在VS 2012中调用Emgu CV进行编程,不需要先安装OpenCV。
3、可以不配置环境变量,也可以配置环境变量,具体后面有说明。
4、目前本人的计算机系统是Windows 7 64位,但是在项目的属性中,只有将目标平台设置为x86才行。
安装和配置步骤:
1、安装下载的可执行程序,全部按照默认设置。这个版本的EmguCV默认安装的话,它的路径是:C:\Emgu\emgucv-windesktop 3.1.0.2282

2、配置环境变量,在系统变量中找到Path或者PATH(如果没有则新建Path),然后在最前面添加(如果你安装时选的不是默认安装路径,可能会有不同):
C:\Emgu\emgucv-windesktop 3.1.0.2282\bin\x64;C:\Emgu\emgucv-windesktop 3.1.0.2282\bin;C:\Emgu\emgucv-windesktop 3.1.0.2282\bin\x86;
如果是你的本账户使用,也可以在“用户变量”中新建Path,然后将上面的三条路径添加进去。如果想让所有用这台计算机的人使用,则推荐在“系统变量”的Path中添加这些路径。

如果不想配置环境变量,那么需要将原EmguCV的安装目录的bin文件下的x86文件夹整个拷到当前程序的Debug目录下:

3、打开VS 2012 ,新建一个Winform程序。在“工具箱”中右键“选择项”,添加Emgu.CV.UI.dll(在EmguCV安装的bin目录中),添加以后,在“工具箱”的“所有Windows窗体”中会多出来4个控件:

4、在“解决方案资源管理器”中,添加“引用”,在本版本的EmguCV中,dll的数量得到了整合,一眼看去“估计”有用的dll一共只有4个:

本例中,我们需要导入:Emgu.CV.UI.dll、Emgu.CV.World.dll
5、然后在程序中导入命名空间:using Emgu.CV;
6、然后拖3个ImageBox到主窗体,拖3个TextBox和4个Button到主窗体,如图所示:

功能说明:点击button1添加图片并显示到ImageBox1中;点击button2将ImageBox1中的图片去色,并将灰度图显示到ImageBox2中;点击button3直接载入新的图片并去色,然后显示到ImageBox3中;点击button4清除所有的图片和文本框中的内容。

完整程序如下所示:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV; namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
Mat img1 = null;
Mat img2 = null;
Mat img3 = null;
Stopwatch sw = new Stopwatch();
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog lvse = new OpenFileDialog();
lvse.Title = "选择图片";
lvse.InitialDirectory = "";
lvse.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
lvse.FilterIndex = ; if (lvse.ShowDialog() == DialogResult.OK)
{
textBox1.Text = null; sw.Restart(); img1 = CvInvoke.Imread(lvse.FileName, Emgu.CV.CvEnum.LoadImageType.AnyColor); imageBox1.Width = img1.Width / ;
imageBox1.Height = img1.Height / ;
imageBox1.Image = img1; sw.Stop();
textBox1.Text = sw.ElapsedMilliseconds.ToString();
} } private void button2_Click(object sender, EventArgs e)
{
if (img1 != null)
{
img2 = new Mat(img1.Rows, img1.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, );
textBox2.Text = null;
sw.Reset();
sw.Start(); CvInvoke.CvtColor(img1, img2, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
imageBox2.Width = img2.Width / ;
imageBox2.Height = img2.Height / ;
imageBox2.Image = img2; sw.Stop();
textBox2.Text = sw.ElapsedMilliseconds.ToString();
}
} private void button3_Click(object sender, EventArgs e)
{
textBox3.Text = null;
OpenFileDialog lvse = new OpenFileDialog();
lvse.Title = "选择图片";
lvse.InitialDirectory = "";
lvse.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
lvse.FilterIndex = ;
if (lvse.ShowDialog() == DialogResult.OK)
{
sw.Reset();
sw.Start(); img3 = CvInvoke.Imread(lvse.FileName, Emgu.CV.CvEnum.LoadImageType.Grayscale);
imageBox3.Width = img3.Width / ;
imageBox3.Height = img3.Height / ;
imageBox3.Image = img3; sw.Stop();
textBox3.Text = sw.ElapsedMilliseconds.ToString();
}
} private void button4_Click(object sender, EventArgs e)
{
img1 = null;
img2 = null;
img3 = null;
imageBox1.Image = null;
imageBox2.Image = null;
imageBox3.Image = null;
textBox1.Text = null;
textBox2.Text = null;
textBox3.Text = null;
}
}
}
注意:项目的属性和配置管理器设置如下:


配置错误了则会报以下错误:

后来我又用一台安装有Windows 10 64位操作系统的计算机试了一下,配置为Any CPU或者x86、x64都能正常运行,并不报错。
参考资料:
1、关于EMGU CV的那些事——1.环境搭建(win8 vs2012 emgucv3.0) (这个例子中用的EmguCV版本不是最新版本,“引用”中添加的dll不一样)
Emgu CV的配置以及在VS 2012中进行图像处理的步骤和实例的更多相关文章
- C#使用Emgu CV来进行图片人脸检测
项目需求:某市级组织考试,在考试前需审核考生采集表中的考生照片是否合格,由于要审核的考生信息采集表有很多,原先进行的是手动人工审核,比较费时费力,审核的要求也很简单,并不判断考生是否是图片本人(身份验 ...
- [转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010
2014-08-16 最近要进行图像识别,准备利用几天的时间研究一下Emgu CV,花了一晚上功夫进行调试环境安装,期间遇到了不少问题,现梳理一下安装过程和调试过程中出现的问题. 中间有转载别人的部分 ...
- Emgu CV的一个异常的解决方法
今年组里有大项目落我头上了,并不能像去年一样回家还能搞搞Cocos2dX,一把老泪流了下来... 回到正题,由于组里需要做一个显示板的自动测试项目,涉及到Computer Vision.不得不说,这才 ...
- 关于EMGU CV的那些事——1.环境搭建(win8 vs2012 emgucv3.0)
http://blog.csdn.net/aptx704610875/article/details/46045689 楼主读研阶段研究图像处理,想用C#实现PTAM/PTAMM算法并用UNITY创建 ...
- {Reship}{Emgu}{vs2010}C#配置Emgu
=============================================================================================This Ar ...
- Emgu CV 初试
Emgu CV 是.NET平台下对OpenCV图像处理库的封装,也就是.NET版.可以运行在C#.VB.VC++等. 安装完成后需要设置环境变量,比如我安装在D:\Emgu\emgucv-window ...
- 基于Emgu CV的人脸检测代码
这个提供的代码例子是Emgu CV提供的源码里面自带的例子,很好用,基本不需要改,代码做的是人脸检测不是人脸识别,这个要分清楚.再就是新版本的Emgu CV可能会遇到系统32位和64位处理方式有区别的 ...
- 自己积累的一些Emgu CV代码(主要有图片格式转换,图片裁剪,图片翻转,图片旋转和图片平移等功能)
using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; na ...
- Emgu.CV 播放视频
using Emgu.CV; using System; using System.Drawing; using System.Threading; using System.Windows.Form ...
随机推荐
- HTML:target=_blank
_blank -- 在新窗口中打开链接 _parent -- 在父窗体中打开链接 _self -- 在当前窗体打开链接,此为默认值 _top -- 在当前窗体打开链接,并替换当前的整个窗体(框架页) ...
- Linux 文件系统目录结构
进入 Linux 根目录(即 "/",Linux文件系统的入口,也是处于最高一级的目录),运行 "ls -l" 命令,可以看到 Linux 系统目录. 1./b ...
- Ubuntu 14.04 配置安卓5.1编译环境
Ubuntu 14.04版本 电脑cpu必须是64位 硬盘分配大约100G的空间 1.ubuntu中更新源 $ sudo apt-get update 2.android5.1需要安装openjdk- ...
- 理解加密算法——创建CA机构,签发证书并开始TLS通信
1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下,NODE.JS代码: TCP Server: const net=requir ...
- 手动封装OpenCV1.0的IplImage读取保存功能遇到的小问题
最近准备重新学习图像处理的知识,主要目的是自己实现一遍图像处理的算法,所以除了读取.保存图像外的操作都自己写,没想到直接封装OpenCV的读取.保存功能的第一步就出错.关键代码如下 void MyIm ...
- Jenkins的pipeline
说明 再官网文档上有说明pipeline的工作流程,具体可以参考pipeline文档和语法文档. 这里将pipeline的生命周期图贴出来 我们暂时不会用到完整的流程,只摘取有用的部分,完成最小的流 ...
- DP 过河卒
棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. 棋盘用坐标 ...
- css 字体英文对照
宋体: SimSun 黑体: SimHei 华文细黑: STHeiti Light [STXihei] 华文黑体: STHeiti 微软雅黑: Microsoft YaHei 微软正黑体: Micro ...
- print 和 println的区别
println 输出字符后,下一个输出的字符会换行展示 print 输出字符后,下一个输出字符不会会换展示
- java代码---indexOf()方法
总结:indexOf(String str,int index)方法.从参数指定位置开始,如果index值超过了字符串长度,则返回-1 package com.a.b; import java.io. ...