13

我真的是 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();

        }
    }
}

我收到以下错误:

在此处输入图像描述

我检查并在 .exe 文件夹中有所有必要的 dll

4

5 回答 5

22

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

  1. 对于基本应用程序,您需要cvextern.dll, Emgu.CV.dll, Emgu.CV.UI.dll, Emgu.Util.dll在 .EXE 的目录中。

  2. 你需要一个 x86(x64) 目录在 .exe 目录和你需要的“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.dllcudart32_42_9.dll, npp32_42_9.dll, opencv_flann240.dll

只要您包含所有必需的 DLL,该应用程序就会运行。

于 2012-07-07T15:44:04.213 回答
5

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

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

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

希望它可以帮助某人。

于 2016-07-21T02:09:05.300 回答
1

发生在我身上的另一种情况是,我有一个 NuGet 包已安装但未为我的项目加载,因此引用看起来不错,但在运行时,我得到了 TypeInitializationException。

-管理 NuGet 包

-时钟管理包

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

于 2016-01-28T17:29:02.893 回答
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

于 2016-08-26T05:09:12.813 回答
0

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

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

于 2018-05-09T21:31:10.320 回答