EmguCV 类型初始化异常

问题描述 投票:0回答:7

我真的是 EgmuCV 的新手

我尝试使用以下代码从网络摄像头捕获图像:

//Program.cs (Winform)
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;
using Emgu.CV.UI;
using Emgu.Util;
using Emgu.CV.Structure;

namespace EgmuCVTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Capture cp = new Capture();
            ImageViewer imv = new ImageViewer();

            Application.Idle += new EventHandler(delegate(object s, EventArgs ea)
            {
                imv.Image = cp.QueryFrame();
            });

            imv.ShowDialog();

        }
    }
}

我收到以下错误:

enter image description here

我检查了 .exe 文件夹中是否有所有必需的 dll

c# emgucv
7个回答
23
投票

在遇到同样的问题一段时间后,我发现解决此问题的说明(TypeInitializer Exception)不完整。

  1. 对于基本应用程序,您需要 .EXE 目录中的

    cvextern.dll, Emgu.CV.dll, Emgu.CV.UI.dll, Emgu.Util.dll

  2. 您需要在 .exe 目录中有一个 x86(x64) 目录,并且在“x86”目录中您需要

    opencv_calib3dXXX.dll, opencv_contribXXX.dll, opencv_coreXXX.dll, opencv_features2dXXX.dll, opencv_highguiXXX.dll, opencv_imgprocXXX.dll, opencv_legacyXXX.dll, opencv_mlXXX.dll, opencv_objectdetectXXX.dll, opencv_videoXXX.dll
    cudart32_42_9.dll, npp32_42_9.dll, opencv_flann240.dll

包含所有必需的 DLL 后,该应用程序将立即运行。


5
投票

我使用 Emgu 3.0 64 位,解决此问题唯一需要做的就是将项目中的构建类型更改为 x64。

右键单击您的项目名称 -> 属性 -> 构建 -> 平台目标 -> x64

参考http://www.codeproject.com/Articles/257502/Creating-Your-First-EMGU-Image-Processing-Project

希望它对某人有帮助。


1
投票

我遇到的另一个情况是,我安装了一个 NuGet 包,但没有为我的项目加载,因此引用看起来不错,但在运行时,我收到了 TypeInitializationException。

-管理 NuGet 包

-包上的时钟管理

-选中当前项目的复选框。


1
投票

如果您使用的是支持 GPU 编译的 OpenCV DLL,但您的 PC 没有 GPU,也会出现此问题。如果您使用的是配备 Intel 图形芯片组的便携式计算机。

在这种情况下,您可以使用旧版本 2.4.0,它仍然提供不支持 GPU 的 DLL:

https://sourceforge.net/projects/emgucv/files/emgucv/2.4.0/libemgucv-windows-x64-2.4.0.1717.zip


0
投票

如果您使用的是 64 位操作系统,只需从 x64 文件夹复制 cvextern.dll 文件,然后将其复制到项目的 debug 文件夹中。

注意:手动执行,因为“添加现有项目”不会复制它。


0
投票

我正在使用 Emgu.CV 4.4.0.4099 并遇到相同的异常。这是我修复它所遵循的步骤。

  1. 将 cvextern.dll 复制到输出目录。
  2. 安装
    Emgu.CV.runtime.windows
    nuget 包。

0
投票

如果是新安装的 Windows(未安装任何其他程序),请安装 Microsoft Visual C++ 2010 x86 Redistributable。

© www.soinside.com 2019 - 2024. All rights reserved.