EmguCV+VS2010 C#,cvinvoke异常的解决办法

来源:互联网 发布:·淘宝 编辑:程序博客网 时间:2024/06/10 08:46
1.安装openCV 2.4

2.安装emgucv-windows-x86 2.4.0,注意目录中不能有空格,很多问题都是由此引起,空格改成下划线

3.VS 2010C#中新建windows项目,在工具箱上“添加选项卡”命名EmguCV,然后右键“选择项...”->"NETFrameworks"导入“C:\Emgu\emgucv-windows-x86_2.4.0.1717\bin”下的Emgu.CV.UI.dll,面板上会多4个组件。

4.在工程的“引用”中,右键“添加引用...”,把C:\Emgu\emgucv-windows-x86_2.4.0.1717\bin下所有形如Emgu.CV.XXXX.dll的文件都导入,也别忘记导入ZedGraph.dll

5.C:\Emgu\emgucv-windows-x86_2.4.0.1717\bin下Emgu.CV.dll、Emgu.CV.ML.dll、Emgu.CV.UI.dll、Emgu.Util.dll、ZedGraph.dll文件拷贝到工程的debug或release目录中,如果用到其他dll文件,也拷进来。如果正常编译,这步其实可以不用,用到的DLL文件会自动拷贝到debug和release下,这里是防止第四步中漏引用相应的dll引起错误。

6.在系统PATH中,添加2个路径
1)C:\Emgu\emgucv-windows-x86_2.4.0.1717\bin\x86
2)C:\Emgu\emgucv-windows-x86_2.4.0.1717\bin

OpenCV 2.4开始的版本,如果不使用自编译的dll,其实是用不到的。如果是使用自编译opencv库,那么把编译后的dll和lib放在一个bin目录,把目录也加入系统PATH。

导致cvinvoke异常的原因,是因为找不到相应的DLL文件。
解决一:就是使用上面的PATH设置,把需要用到的DLL都加到系统路径。
解决二:把前面加到PATH的目录下的所有DLL文件都拷贝到工程项目的debug和release目录下。

推荐使用第一种方法,第二种方法虽然简单,但是缺点是占用300M多的空间。


是否能正常运行,用下面的例子可以测试一下,如果正常,可以弹出窗口显示一张图片。
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 EmguDemo
{
 
   publicpartial class Form1 : Form
    {
       public Form1()
       {
           InitializeComponent();
       }

       private void button1_Click(object sender, EventArgs e)
       {
           CvInvoke.cvNamedWindow("Hello");
           IntPtr img = CvInvoke.cvLoadImage("C:\\1.jpg",Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_ANYCOLOR);
           CvInvoke.cvShowImage("Hello", img);
           CvInvoke.cvWaitKey(0);
           CvInvoke.cvReleaseImage(ref img);
           CvInvoke.cvDestroyWindow("Hello");
       }
    }
}
以上实测ok.修改path后,注销重新登录后,vs2010才能使用新的path设置!
原文http://blog.sina.com.cn/s/blog_6233611f01016mpj.html
0 0