OpenCV是由C/C++编写的图像处理库,C#不能直接调用,
但是EmguCV是使用C#对openCV进行封装。
那么问题来说,EmguCV如何使用?
我这里开发环境是VS2013 + Win7
1、首先需要下载EmguCV ,下载地址:https://nchc.dl.sourceforge.net/project/emgucv/emgucv/3.2/libemgucv-windesktop-3.2.0.2682.exe
下载完成后,进行安装,安装步骤是傻瓜式安装,但要记着自己的安装路径 (eg:C:\Emgu\emgucv)
2、需要配置环境变量。
打开我的电脑 ==>> 打开高级系统设置==>>打开环境变量==>>在系统变量中找到Path变量==>>在对话框中的文本框中的最后添加EmguCV的安装路径,如我的安装路径为:C:\Emgu\emgucv\bin==>>点击确定,必要时重启电脑生效。
路径需要指向bin目录下。




3、VS2013中配置EmguCV。
新建一个Windows窗体程序==>>添加对C:\Emgu\emgucv\bin目录下的对EmguCVd的引用(共4个组件:Emgu.CV.World.dll ZedGraph.dll Emgu.CV.UI.GL.dll Emgu.CV.UI.dll)。

配置过程到此为完成。
4、具体代码实现。
在Windows窗体上 ,拖一个ImageBox、一个按钮到到窗体上。双击按钮,编写Click事件代码
编写Click事件代码。具体代码如下:
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;
namespace WinFrom1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private VideoCapture capture;
private bool isProcess = false;
private void button1_Click(object sender, EventArgs e)
{
if (capture != null)
{
if (isProcess)
{
Application.Idle -= new EventHandler(ProcessFram);
this.startBtn.Text = "Stop";
}
else
{
Application.Idle += new EventHandler(ProcessFram);
this.startBtn.Text = "Start";
}
isProcess = !isProcess;
}
else
{
try
{
capture = new VideoCapture();
}
catch (NullReferenceException expt)
{
MessageBox.Show(expt.Message);
}
}
}
private void ProcessFram(object sender, EventArgs arg)
{
imageBox1.Image = capture.QueryFrame();
}
}
}
5、运行过程中可能出现的Bug。
a) 点击运行,可能会如下异常:System.TypeInitializationException”类型的未经处理的异常在 Emgu.CV.World.dll 中发生
解决方法:将EmguCV bin目录下的x64 x86文件拷贝到项目下Debug目录下即可。(我本地已调试好,不报该错误了,暂无图片。)
b) 再次运行,继续提示报错,如下图:

此时情况为缺少VC redit.exe程序。
附链接地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=48145

傻瓜式安装改exe程序,必要时重启电脑。
c)再次运行程序。

==>> 恭喜,成功了,可以洗洗睡了。


-----于20171024晚,哦,,,,不,,,不,,,不 已经25号了,这个猿节就这样吧。
网友评论