Windows10下C# 使用EmguCV3.2 读取本机摄像头
参考路径:https://blog.csdn.net/qq_36131739/article/details/77703299
前面一篇文章详细介绍了如何在VS2013下配置EmguCV3.2。接下来,我们来编写代码进行摄像头的读取与显示。
先新建一个Windows窗体程序项目,配置好EmguCV,具体过程请参照前一篇博客。
在设计模式下,拖一个ImageBox到窗体上。
并拖一个按钮到窗体上,Name为startBtn,双击按钮,编写Click事件代码。具体代码如下:
- 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;
- namespace WindowsFormsApplication3
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private VideoCapture capture;
- private bool isProcess = false;
- private void startBtn_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();
- }
- }
- }
点击运行,可能会如下异常:System.TypeInitializationException”类型的未经处理的异常在 Emgu.CV.World.dll 中发生
其他信息: “Emgu.CV.CvInvoke”的类型初始值设定项引发异常。
解决方法:将EmguCV bin目录下的x64 x86文件拷贝到项目下Debug目录下如: WindowsFormsApplication3\WindowsFormsApplication3\bin\Debug
这样就可以解决了