最近接触计算机视觉方面的东西,于是准备下手学习opencv,从官网下载windows的安装版,配置环境,一系列步骤走完后,准备按照惯例弄个HelloWord。也就是按照网上的教程,打开了那个图像处理领域非常有名的lena图片(据说是个裸女(^o^)/~)。
正当我摩拳擦掌准备开始opencv学习之旅的时候,习惯了GUI的我突然觉得用C++做开发弄界面很麻烦,不如用C#来的方便,于是又发现了一个封装了opencv的.net库,可以被VC++,VC#,VB.net调用,即EmguCV。网上对于EmguCV的介绍很少,不是因为它没用,而是因为它的使用方法几乎和opencv一模一样,opencv的资料完全可以直接用于EmguCV。但对于小白来讲,opencv和Emgucv都是零基础的情况下学习emgucv,过程真的是很痛苦。通过加入QQ群,向一个个大牛请教,通过大牛不耐其烦的指导,总算完成了当时迫在眉睫的任务。在这里,非常感谢EmguCv群512782650中的群主小危,和热心群友X,是他们热心的指导和帮助,让我一个门外汉找到了一个切入的门径,让我明白了程序猿群体中除了高傲的屌丝外,还有热情的屌丝(哈哈,希望他们看到了别拍我)。投桃报李,我想,既然没有EmguCv的文章少,我就利用课余时间来写一点基础入门的、带点实例的帖子,不敢说深入浅出,那就浅入浅出吧。其中很多内容也是从网上Ctrl+V来的,但是加入了我学习过程中的理解,不敢说非常符合别人的学习习惯,但最起码是我自己从零开始学习时的一些体会。因为是小白,而且OpenCv也是零基础,所以,文章中的一些观点有可能有错误,希望得到各位大牛们的指点,如果能给刚刚接触EmguCV的童鞋一点帮助,那就更好了。
在一开始学习EmguCv的时候,因为资料匮乏,我也几度要放弃,直到我看到了下面的这段文字。所以我非常感谢这篇文章的百度经验作者“超超在上”。所以我把这篇文章内容贴出来,希望给像我一样因资料匮乏而准备放弃EmguCv的童鞋以动力。
不过不少新手在使用EmguCV在使用几次之后便放弃。这有以下几个原因:
1.舆论影响。很多人都说C#的运行效率低。opencv是C和C++编写的,理所当然应该在VC++中运行,图像处理又是一个计算量很大的工作,C#不行。C#运行效率肯定比C/C++差,但是采用混合编程的方法就可以啦,用C#的框架和运行机制,计算交给C就好啦。EmguCV很多处理函数都是采用托管调用opencv。这个在EmguCV的安装包里可以看到,里面含有所有Opencv的dll。
2.缺少资料,学习受挫而放弃。不得不承认EmguCV方面的学习资料实在是太少啦。很多时候出现问题,在网上基本上找不到答案。而且EmguCV前期版本对opencv封装不全面,很多基本的函数没有被封装,使用起来很不方便,网上很多人以讹传讹,编写很困难。不过使用2.3版本就没有这个问题,opencv基本函数都得到了很好的封装。opencv图像处理的函数都封装在cvInvoke中。
而Image<>结构是连接opencv与emgucv的重要桥梁。其中C#的Intptr类型可以很好地传递IplImage*指针结构。
http://jingyan.baidu.com/article/a65957f4aae29024e67f9b13.html,这是原文链接,有兴趣的朋友可以去看一下。