最近有些悲剧,本想大步的往前走,不想一不小心掉沟里了。既然都已经掉沟里了,那就慢慢往上爬吧。于是就静下心来读书,以前学过OpenCV。现在我做图像处理使用的是C#,通常自己编写一些代码,可是有OpenCV这么好的库不用,在去自己编有些代码,不是舍近求远吗。OpenCV是和VC++在一起配置使用的,C#中使用的OpenCV叫做EmguCV,我大概看了下解释,好像是把OpenCV给封装了,可以支持.NET的开发。接下来我想写的就是如何在Visual 2008中配置EmguCV,然后从网上山寨一个小例子,通过这个了解一下大体上的过程。
第一步:下载EmguCV。
http://sourceforge.net/projects/emgucv/files/
显示的是最新的版本,但是我用的是VS2008,怕最新的可能和我的VS2008兼容不好,所以我觉定下个较早的版本,点击上图括起来的文件emgucv,可以看到各个版本,如下图所示:
我选择的是2.42的版本,点击进入下载2.42版本的页面,如下图:
从图中可以看到,有好多个下载的,这都是对应不同的系统的,比如有LINUX下的版本,找到windows下的版本,如上图红线括起来的,发现有两个windows下的版本,其中一个下载下来解压后配置好就可以用,一个下载下来还需要安装,这里我直接下载的是解压就使用的,比安装的大,共121.7M,下载下来后我的解压放在了D盘。如下图所示:
在配置之前,还需要一个要windows的一些支持,在EmguCV网站有,我的是VS2008,需要安装MSVCRT 9.0 SP1,如下图,点击进去下载安装便可以了。
第二步:EmguCV和VS2008配置
好,下载好了,那接下来就开始配置了,只有配置好了才可以编程。
我在网上见了两种使用的形式,一种是将我们在编程时使用的所有的.dll文件直接从EmguCV中拷贝到我们编程的对应项目里面,在VS2008中配置好后使用便可以了,这时候也不用设置环境变量等。
第二种就是需要添加环境变量,然后在 VS2008中配置,我这里使用第二种方法:
1)首先添加环境变量:
我的是windows7 系统,找到计算机,右键-属性-高级系统设置-环境变量;
过程如下图:
弹出如上图,其中分为上下两部分,第一部分为: Adminitrator的用户变量,第二部分为:系统变量。
我在网上看了,有些配置是在:Adminitrator的用户变量中添加环境变量,有的是在:系统变量中添加,我也因此很郁闷,所以我干脆在两个里面都添加了。
在Adminitrator的用户变量中找到Path,然后把EmguCV的路径添加进去(依照自己EmguCV放的路径)为:
D:\libemgucv-windows-x86-gpu-2.4.2.1777\bin;
D:\libemgucv-windows-x86-gpu-2.4.2.1777\bin\x86
过程如下图:
记得分隔的时候用的是英文输入发的分号 ;
我们在:系统变量中也添加同样的内容。
D:\libemgucv-windows-x86-gpu-2.4.2.1777\bin;
D:\libemgucv-windows-x86-gpu-2.4.2.1777\bin\x86
过程如下图:
现在系统的环境变量配置好了,我们就开始在VS2008中开始配置,通常配置完这一步是需要从新启动一下电脑的,原因我也不知道。
2)在VS2008中配置:
第一首先的保证自己的VS2008的开发环境是在C#下,如果不是,怎么办了?不要着急,一步一步来,先打开VS2008,然后点击工具-导入和导出打开,如下图:
选择重置所有设置,如下图:
点击下一步:
在点击下一步:看到如下图界面,选择一个合适的开发环境便可以了,这里是Visual C#开发环境。
好,VS2008的开发环境配置好了,下来该和EmguCV连起来了。
首先在C#中新建一个项目,如下图:
现在开始将EmguCV关联到这个项目,每次新建一个项目后,都必须这样做。在VS2008旁边的解决资源管理器中找到引用,点击右键-添加引用:
如下图所示:
然后找到浏览,如下图:
到我们安装的EmguCV 下,D:\libemgucv-windows-x86-gpu-2.4.2.1777\bin
下,找到选择:Emgu.CV.dll、Emgu.CV.ML.dll、Emgu.CV.UI.dll、Emgu.Util.dll、ZedGraph.dll等共五个DLL文件,并点击确定加入。如下图所示即可:
这时候其实已经将EmguCV和VS2008关联起来了,可以写一些程序来验证了,通常情况下,为了后续处理,还可以将EmguCV中的一些工具添加进来,过程如下:
VS2008中找到:
工具-选择工具箱,如下图:
打开后,找到浏览:如下图
到我们安装的EmguCV下:D:\libemgucv-windows-x86-gpu-2.4.2.1777\bin
找到Emgu.CV.UI.dll打开,如下图:
则工具箱中会出现如下图所示的工具,这些就是从EmguCV中新添加的,以后可以使用了:
为了验证配置的有效性,我们这里从网上山寨一个小的例子:
下面的都是从网上山寨来的,感谢代码提供者:
那么我们现在就来简单用试用一下EmguCV,写个IT入门最常见的输出”Hello World”。
Hello World示例:
该示例展示点击一个按钮,显示“Hello World”(这用PictureBox和cvNamedWindow分别显示)。步骤如下:
1、创建一个Windows窗体应用程序
2、将Form1的Text属性改为:“HelloWorld”
3、在工具栏中拖入一个Button按钮和一个PictureBox
4、将Button的Text属性设置为“Hello World”,PictureBox的SizeModel设置为AutoSize
5、双击Hello World按钮,系统会自动生成一个Click事件
6、添加EmguCV的引用,这里添加最常用的3个【Emgu.CV.dll、Emgu.CV.UI.dll、Emgu.Util.dll】
7、引用EmguCV命名空间
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
8、编写按钮Click事件代码
private void button1_Click(object sender, EventArgs e)
{
string winName="HelloWorldWin";
//创建一个窗口
CvInvoke.cvNamedWindow(winName);
//宽:400px 高:300px 白色背景
Image<Bgr, Byte>image = new Image<Bgr, Byte>(300,300, new Bgr(255, 255, 255));
MCvFont font= new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0);
image.Draw("HelloWorld!",ref font,new Point(10,100),new Bgr(0,0,0));// 黑色字体
CvInvoke.cvShowImage(winName,image);
pictureBox1.Image= image.ToBitmap();
CvInvoke.cvWaitKey(0);
//释放资源
CvInvoke.cvDestroyWindow(winName);
}
如果可以运行成功,那就恭喜了,配置合适了。