C#:'Emgu.CV.CvInvoke'的类型初始值设定项引发了异常 [英] C#: The type initializer for 'Emgu.CV.CvInvoke' threw an exception

查看:130
本文介绍了C#:'Emgu.CV.CvInvoke'的类型初始值设定项引发了异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的项目中出现以下错误:'Emgu.CV.CvInvoke'的类型初始化程序引发异常。我的代码:



使用System; 
使用System.Collections.Generic;使用System.ComponentModel
;
使用System.Data;使用System.Drawing
;
使用System.Linq;
使用System.Text;
使用System.Windows.Forms;
使用MetroFramework.Forms;使用System.Data.Odbc
;
使用System.Data.SqlClient;
使用System.Configuration;
使用System.Media;
使用System.Drawing.Imaging;
使用Emgu.CV;
使用Emgu.CV.UI;
使用Emgu.CV.Structure;
使用Emgu.Util;
使用System.Runtime.InteropServices;

名称空间Visitor_GatePass_Management_System
{
//公共部分类VisitorMasterPage:表格

公共部分类VisitorMasterPage:MetroForm
{

public VisitorMasterPage()
{
InitializeComponent();
}

私人Emgu.CV.Capture _capture;
//私有静态Emgu.CV.Capture _capture;
private bool _captureInProgress;
//Emgu.CV.Capture _capture;
// bool _captureInProgress;

private void VisitorMasterPage_Load(object sender,EventArgs e)
{
lblpath.Text =D:\\\\ image.jpg;
}

private void btncapphonto_Click(object sender,EventArgs e)
{
if((this.lblpath.Text.Trim()。Length> 0) )
{
if((_capture == null))
{
try
{
// _ capture = new Emgu.CV.Capture() ;

_capture = new Capture();
}
catch(NullReferenceException excpt)
{
MetroFramework.MetroMessageBox.Show(this,excpt.Message);
}
}
if(((_capture!= null)))
{
if(_captureInProgress)
{
this.btncapphonto .Text =开始捕获;
// this.Load + = new EventHandler(this.ProcessFrame);
// EventHandlerList list =(EventHandlerList)
Application.Idle - = new EventHandler(this.ProcessFrame);

this.pbphoto.Image.Save(this.lblpath.Text,ImageFormat.Jpeg);
this.pbphoto.ImageLocation = this.lblpath.Text;
}
else
{
// captureButton.Text =Capture
this.btncapphonto.Text =Capture;
Application.Idle + = new EventHandler(this.ProcessFrame);
}
_captureInProgress =!_captureInProgress;
}
}
其他
{
MetroFramework.MetroMessageBox.Show(这个,请设置用于保存图像的目录路径。);
}
}

private void ProcessFrame(对象发送者,EventArgs arg)
{
//Emgu.CV.Image [] frame(Emgu。 CV.Structure.Bgr,Byte)= this._capture.QueryFrame;
Emgu.CV.Image frame = this._capture.QueryFrame();
Emgu.CV.Image frame1 = frame.Resize(150,150,Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR);
pbphoto.Image = frame1.Bitmap;
}

private void btnSaveVisitorMaster_Click(object sender,EventArgs e)
{

}

}
}

解决方案

将Emgu dll复制到BIN输出文件夹帮助我



Emgu.CV.CvInvoke Exception windows x64 - Emgu CV:.NET中的OpenCV(C#,VB,C ++和更多) [ ^ ]

I have a following error in my project: "The type initializer for 'Emgu.CV.CvInvoke' threw an exception". My code:

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 MetroFramework.Forms;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Configuration;
using System.Media;
using System.Drawing.Imaging;
using Emgu.CV;
using Emgu.CV.UI;
using Emgu.CV.Structure;
using Emgu.Util;
using System.Runtime.InteropServices;

namespace Visitor_GatePass_Management_System
{
// public partial class VisitorMasterPage : Form

public partial class VisitorMasterPage : MetroForm
{

public VisitorMasterPage()
{
  InitializeComponent();
}

private Emgu.CV.Capture _capture;
//private static Emgu.CV.Capture _capture;
private bool _captureInProgress;
//Emgu.CV.Capture _capture;
//bool _captureInProgress;

private void VisitorMasterPage_Load(object sender, EventArgs e)
{
 lblpath.Text = "D:\\image.jpg";
}

private void btncapphonto_Click(object sender, EventArgs e)
{
  if ((this.lblpath.Text.Trim().Length > 0))
  {
    if ((_capture==null))
    {
      try
    {
     //_capture = new Emgu.CV.Capture();

     _capture = new Capture();
    }
    catch (NullReferenceException excpt)
    {
      MetroFramework.MetroMessageBox.Show(this, excpt.Message);
    }
  }
  if (((_capture != null)))
  {
    if (_captureInProgress)
    {
      this.btncapphonto.Text = "Start Capture";
      // this.Load +=new EventHandler(this.ProcessFrame);
      //EventHandlerList list=(EventHandlerList)
      Application.Idle -= new EventHandler(this.ProcessFrame);

      this.pbphoto.Image.Save(this.lblpath.Text, ImageFormat.Jpeg);
      this.pbphoto.ImageLocation = this.lblpath.Text;
    }
    else
    {
      // captureButton.Text = "Capture"
      this.btncapphonto.Text = "Capture";
      Application.Idle += new EventHandler(this.ProcessFrame);
    }
    _captureInProgress = !_captureInProgress;
  }
 }
 else
 {
    MetroFramework.MetroMessageBox.Show(this, "Please set directory path for saving the image.");
 }
}

private void ProcessFrame(object sender, EventArgs arg)
{
  //Emgu.CV.Image[] frame(Emgu.CV.Structure.Bgr,Byte)= this._capture.QueryFrame;
  Emgu.CV.Image frame = this._capture.QueryFrame();
  Emgu.CV.Image frame1 = frame.Resize(150, 150,Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR);
  pbphoto.Image = frame1.Bitmap;
}

private void btnSaveVisitorMaster_Click(object sender, EventArgs e)
{

}

}
}

解决方案

Copying the Emgu dll's to BIN output folder helped me

Emgu.CV.CvInvoke Exception windows x64 - Emgu CV: OpenCV in .NET (C#, VB, C++ and more)[^]


这篇关于C#:'Emgu.CV.CvInvoke'的类型初始值设定项引发了异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆