Windows10 + VS2017 C# + 配置EmguCV 4.2.0
EmguCV是这么一个封装库,它就是一个死小孩,倔强的坚持自己,默默跟新到2020,但由于众多程序员的不选择,网上关于他的教程大多老旧。本来作为一个超级超级懒的程序媛,其实很少写关于配置环境的博客,but,觉得关于emgucv配置的博客都有一定的年份,很多资料都有些过时,还是自己写一份,免得再大海捞针。
配置过程借鉴:
https://blog.csdn.net/mingjieshendu/article/details/73469364
https://blog.csdn.net/qq_36131739/article/details/77697966
1.关于Emgu CV
Emgu CV是OpenCV图像处理库在跨平台.Net下的封装。允许用.Net兼容语言来调用OpenCV函数,如C#、VB、VC++、IronPython等。同时该封装可以在Mono平台编译并且允许在Windows,Linux,Mac OS X,iPhone,iPad和Android设备上运行。
2.下载Emgu CV
Emgu CV官网:http://www.emgu.com
各个版本下载:https://sourceforge.net/projects/emgucv/files/emgucv/
本文选择的版本:
下载后你会得到一个exe文件,将他打开安装到D盘(乖,只要不是C盘咱都行)
打开后是这么个文件夹
3.配置Emgu CV
Win+R
调出控制面板
4.配置VS
4.1 ctrl+shift+n新建项目
4.2给项目文件添加引用
添加完后点击确定,你就可以看到你刚才添加的东西了
4.3添加Emgu Cv工具
工具-选择工具箱
然后你可以看到你的工具箱里面(没有工具箱就ctrl+alt+x)
4.4更改debug平台
4.代码测试
代码效果,打开摄像头
拖入一个button和一个imagebox进入面板
在面板对应的.cs文件中添加引用文件名称(不一定都用得到,反正加上保平安)
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
using Emgu.CV.UI;
using Emgu.CV.ML;
代码借鉴:https://blog.csdn.net/qq_36131739/article/details/77703299
完整代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
using Emgu.CV.UI;
using Emgu.CV.ML;
namespace EMGUCVtest
{
public partial class CameraCapture : Form
{
//declaring global variables
private VideoCapture capture;
private bool isProcess = false;
public CameraCapture()
{
InitializeComponent();
}
private void btnStart_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)
{
CamImageBox.Image = capture.QueryFrame();
}
private void CameraCapture_Load(object sender, EventArgs e)
{
}
}
}
代码效果:
当遇到:
(运行不调试)
(运行调试)
粘贴到这个文件夹