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://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目录下。
2、Emgu CV安装后
进入bin/x86文件夹
是运行时所需要的依赖文件,在开发时,需要把这些文件复制到程序的Debug文件夹内,不然会抛出
T
ypeInitializerException 异常:
有关EmguCV相关的类都在bin文件夹里面
3、新建C#测试程序
(1)新建一个C#窗体应用程序,并在Form1中添加一个按钮控件。
(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。
将emgu cv安装目录D:\Program File\opencv\emgucv-windows-universal-gpu 2.4.9.1847\bin\x86下的所需要的依赖文件,在开发时,需要把这些文件复制到程序的Debug文件夹内。
(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)编译程序,运行结果如图: