C# 调用OpenCV




Emgu CV是OpenCV的一个跨平台的.Net封装,由于OpenCV是用C和C++编写的,Emgu用C#对其进行封装,允许用.Net语言来调用OpenCV函数,如C#、VB、VC++等,同时该封装也可以被编译到Mono平台和允许在Windows、Mac OS、Android、iPhone、iPad等多个平台上运行.




Emgu CV官方下载Emgu CV库 http://www.emgu.com


安装包下载地址:  http://sourceforge.net/projects/emgucv/




官方参考文档地址:http://www.emgu.com/wiki/files/2.4.10/document/index.html


这里使用的Emgu CV库是:libemgucv-windows-universal-gpu-2.4.9.1847.exe。



在VS2010已经配置OpenCV2.4.11的基础上,配置C#调用Emgu CV环境。OpenCV2.4.11安装在D:\Program File\opencv目录下。





1、Em gu CV安装包安装时,安装路径可以直接放到opencv2.4.11的目录下。

C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_封装

C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_System_02

C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_封装_03




2、Emgu CV安装后


C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_System_04


进入bin/x86文件夹 是运行时所需要的依赖文件,在开发时,需要把这些文件复制到程序的Debug文件夹内,不然会抛出 T ypeInitializerException异常:


C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_OpenCV_05


有关EmguCV相关的类都在bin文件夹里面


C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_封装_06



3、新建C#测试程序


(1)新建一个C#窗体应用程序,并在Form1中添加一个按钮控件。


C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_System_07


(2)添加引用,D:\Program File\opencv\emgucv-windows-universal-gpu 2.4.9.1847\bin目录下的:Emgu.CV.dll;Emgu.Util.dll;Emgu.CV.DebuggerVisualizers.VS2010.dll;ZedGraph.dll。


C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_System_08




将emgu cv安装目录D:\Program File\opencv\emgucv-windows-universal-gpu 2.4.9.1847\bin\x86下的所需要的依赖文件,在开发时,需要把这些文件复制到程序的Debug文件夹内。


C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_封装_09


(3)添加代码:


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;	//引用添加进来的命名空间

namespace CSharp_opencv
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            IntPtr img = CvInvoke.cvLoadImage("E:\\图库\\abc.jpg", Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_COLOR);
            CvInvoke.cvNamedWindow("hello");
            CvInvoke.cvShowImage("hello", img);
            CvInvoke.cvWaitKey(0);
            CvInvoke.cvReleaseImage(ref img);
            CvInvoke.cvDestroyWindow("hello");
        }
    }
}


(4)编译程序,运行结果如图:


C# 调用OpenCV一 配置VS2010+OpenCV2.4.11+Emgu CV2.4.9_封装_10