学习OpenCV(6) EmguCV 双目视觉

使用EmguCV进行双目视觉的基本操作

  1. EmguCV是什么?
    简单的来讲,EmguCV是一个在.NET环境下的对OpenCV中的函数进行了封装的库,类似的还有OpencvSharp,其实如果我们想在C#的程序里面调用OpenCV,可以使用的方法有很多,例如可以使用COM的方式,导出C函数在C#程序里面使用DLLImport进行引用,或者编写托管C++,在公共语言运行时的帮助下直接使用DLL中由C++编写的类,然而这两种方法都有一个问题,就是参数对应,简单的数据类型可以很容易找到替代类型,但是OpenCV中由很多独特的数据类型,例如矩阵Mat等,这些类型非常常用,但是在C#中却很难找到对应的类型与之直接匹配,这会引起很多麻烦,但是,如果直接使用OPenCVSharp或者EmguCV,就可以避免这个问题,这两个库直接帮我们做好了这些工作,他们的底层依然是使用C++实现的原生的OPenCV,不必过度担心效率问题,而且他们提供了配合Mat等特有数据类型的UI控件,为开发UI程序带来了很多方便.
  2. 使用EmguCV,需要如何配置开发环境?
    基本条件:Visual Studio,推荐版本2015/2017,强烈推荐VS2017.
    EmguCV可以直接到官网下载,这样有一个好处是,安装之后会得到离线文档,这对开发来讲非常重要.但是本文推荐大家使用Nuget来配置环境,这样的好处是生成的解决方案不会依赖于某一个特定的开发机器,如果你经常使用GitHub,或者拥有多台开发机或者工作地点,需要在经常更换开发的地点等,那么你一定会明白一个工程clone下来直接就能编译运行是一件多么重要的事情!
    第一步:新建WinForm工程
    学习OpenCV(6) EmguCV 双目视觉_第1张图片
    第二步:在解决方案资源管理器->工程节点上右击,点击"管理Nuget程序包"
    学习OpenCV(6) EmguCV 双目视觉_第2张图片
    第三步:安装emgucv:
    学习OpenCV(6) EmguCV 双目视觉_第3张图片
    学习OpenCV(6) EmguCV 双目视觉_第4张图片
    第四步:添加UI工具箱项
    打开项目中的界面,进入窗体设计器状态:
    学习OpenCV(6) EmguCV 双目视觉_第5张图片
    在工具箱空白处右击,选择"添加选项卡",并给新建的选项卡命名为"Emgu"(名字可以随便写)
    学习OpenCV(6) EmguCV 双目视觉_第6张图片
    到刚刚新建的工程目录下,找到刚刚使用Nuget安装的EmguCv,在目录中找到Emgu.CV.UI.dll
    学习OpenCV(6) EmguCV 双目视觉_第7张图片
    把这个dll拖到刚刚新建好的工具箱里面,会看到多出了四个控件:
    学习OpenCV(6) EmguCV 双目视觉_第8张图片
    这四个控件就是EmguCV用来显示图片的控件,他们功能十分强大.至此,开发环境就算是配置完了,如果我们把这个工程push到了远端仓库,再从别的地方pull下来,只需要在解决方案管理器视图上右键解决方案,选择"还原Nuget包",然后再添加工具箱项,就能非常方便的完成开发新环境的还原:
    学习OpenCV(6) EmguCV 双目视觉_第9张图片
  3. 如何学习使用EmguCV?
    EmguCv的资料非常少,中文资料更是几乎没有,网络上能找到的资源也都是比较老的版本了,但是这是有原因的,因为EmguCV的使用几乎和OpenCV完全一样,只要掌握了他们两个的对应关系,一个熟悉OPenCV而且熟悉C#的人可以直接使用EmguCV做出相同功能的程序,我们一般遇到的问题都是参数不明确的问题,这个问题可以通过查找EmguCV的官方文档非常简单的解决,只要安装官网上下载的EmguCV的安装包,就会得到这个文档的离线版本.
  4. 基于WinForm的,使用EmguCV开发的双目视觉系统
    我使用EmguCV做了一个简单的双目视觉的程序,下面是我的Github,欢迎Star/follow~~~关于这个程序的具体问题,请看github上的readme文档,我会不定时更新,或者给我提issue,我会尽快回复.
    Emgucv 双目视觉
  5. 如何在WPF中使用EmguCV?
    WPF在Windows平台上的UI表现要比winform更好,原生支持的MVVM/MVP设计模式也更方便开发,代码结构也很合理,下一篇文章,将会介绍如何在WPF程序中使用EmguCV.

你可能感兴趣的:(图像处理)