Windows7 64位机上Emgu CV2.4.2安装与配置

    

Windows7 64位机上Emgu CV2.4.2安装与配置             

        分类:             Emgu CV                   927人阅读     评论(2)     收藏     举报    

1.      从http://sourceforge.net/projects/emgucv/?source=directory下载最新的Emgu CV2.4.2

2.      将libemgucv-windows-x86-gpu-2.4.2.1777拷贝到D:softEmgu2.4.2文件夹下,运行此.exe文件,将其安装到D:softEmgu2.4.2emgucv-windows-x86-gpu2.4.2.1777文件夹下,安装完后会自动重启;

3.      将D:softEmgu2.4.2emgucv-windows-x86-gpu2.4.2.1777inD:softEmgu2.4.2emgucv-windows-x86-gpu2.4.2.1777inx86(x86文件夹下包含有对应的OpenCV2.4.2的动态库,将此目录加入到环境变量后Emgu不需要额外的安装相对应的OpenCV);添加到系统环境变量Path中,重启;

4.      打开vs2008,新建一个基于Windows窗体的应用程序;

5.      导入UI插件:Tool-->Choose Toolbox Items-->.NET Framework Components-->点击Browse,选中D:softEmgu2.4.2emgucv-windows-x86-gpu2.4.2.1777in下的Emgu.CV.UI.dll打开,会在列表中新增HistogramBoxImageBoxMatrixBoxPanAndZoomPictureBox四项;

6.      添加引用:选中工程下的References-->Add Reference-->Browse选中D:softEmgu2.4.2emgucv-windows-x86-gpu2.4.2.1777in下的Emgu.CV.dllEmgu.CV.ML.dll  Emgu.CV.UI.dll Emgu.Util.dllZedGraph.dll 5个动态库,点击OK

7.      点击Solution Platforms-->Configuration ManagerActive solution platform将原来的Any CPU改为x86,否则会提示“Emgu.CV.CvInvoke的类型初始值设定项引发异常”的错误。

网上的一个代码示例,编译、运行成功:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Windows.Forms;

 

usingEmgu.CV;//Emgu

usingEmgu.CV.Structure;

usingEmgu.Util;

usingSystem.Threading;

 

namespaceTestEmgu

{

    public partial class Form1 : Form

    {

       public Form1()

       {

           InitializeComponent();

       }

 

       privateCapturecapture;

       privateboolcaptureinprocess;//判断摄像头的状态

 

       privatevoidbutton1_Click(objectsender, EventArgse)

       {

           if(capture !=null)

           {

               if(captureinprocess)

               {

                   Application.Idle -=new EventHandler(processframe);

 

                   button1.Text ="stop!";

               }

               else

               {

                   Application.Idle +=new EventHandler(processframe);

 

                   button1.Text ="start!";

               }

 

               captureinprocess= !captureinprocess;

           }

           else//摄像头为空,则通过Capture()方法调用

           {

               try

               {

                   capture= newCapture();

               }

               catch(NullReferenceExceptionexcpt)

               {

                   MessageBox.Show(excpt.Message);

               }

           }

       }

 

       privatevoidprocessframe(objectsender, EventArgsarg)

       {

           Image<Bgr,Byte>frame =capture.QueryFrame();

 

           imageBox1.Image =frame;

       }

    }

}

参考文献:

1.  http://www.emgu.com/wiki/

2.  http://blog.163.com/woshitony111@126/blog/static/71379539201282511180304/

3.  http://blog.csdn.net/gaaranaruto/article/details/6328358

原文地址:https://www.cnblogs.com/sczw-maqing/p/3249728.html