OpenCV 的 .Net 接口
文章目录
Emgu CV 是 OpenCV 跨平台的 C# 封装包,主要是为了方便在 C# 里使用 OpenCV 的库函数,下载和安装都很简单,新建一个 C# 控制窗口程序后,Hello World 例子代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using Emgu.CV; using Emgu.Util; using Emgu.CV.Structure; namespace OpenCVTester { class Program { static void Main(string[] args) { //The name of the window String win1 = "Test Window"; //Create the window using the specific name CvInvoke.cvNamedWindow(win1); //Create an image of 400x200 of Blue color using (Image<Bgr, Byte> img = new Image<Bgr, byte>(400, 200, new Bgr(255, 0, 0))) { //Create the font MCvFont f = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0); //Draw "Hello, world." on the image using the specific font img.Draw("Hello, world", ref f, new Point(10, 80), new Bgr(0, 255, 0)); //Show the image CvInvoke.cvShowImage(win1, img.Ptr); //Wait for the key pressing event CvInvoke.cvWaitKey(0); //Destory the window CvInvoke.cvDestroyWindow(win1); } } } }
这里需要注意的是,如果用 Visual Studio 2008 来调试上面的代码,则记得要把 OpenCV 相关的动态链接库放到你测试工程的这个目录里:
\bin\Debug
否则在跑到下面这句代码
CvInvoke.cvNamedWindow(win1);
的时候,就会弹出一个莫名其妙的出错框,提示如下错误:
未处理的"System.TypeInitializationException"类型的异常出现在 OpenCVTester.exe 中。 其他信息: "Emgu.CV.CvInvoke"的类型初始值设定项引发异常
看来,C#调试时的程序动态链接库读取位置,还比较特殊呀~~
文章作者 cookwhy
上次更新 2011-08-05