EmguCV TypeInitializationException
j'ai vraiment un newbie avec EgmuCV
j'essaie de capturer des images de la webcam avec le code suivant:
//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();
}
}
}
j'obtiens l'erreur de suivi:
je check et ont tous besoin de la dll dans le .dossier exe
source d'informationauteur rkmax
Vous devez vous connecter pour publier un commentaire.
Après avoir connu ce même problème pendant un certain temps, j'ai trouvé les instructions pour résoudre ce (TypeInitializer Exception) sont incomplètes.
Pour une application de base, vous avez besoin
cvextern.dll, Emgu.CV.dll, Emgu.CV.UI.dll, Emgu.Util.dll
dans le .EXE du répertoire.Vous avez besoin d'un x86(x64) dir dans le .répertoire exe et à l'intérieur de "x86" dir vous avez besoin
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
etcudart32_42_9.dll, npp32_42_9.dll, opencv_flann240.dll
L'application fonctionnera dès que vous incluez toutes les Dll requises.
Je suis en utilisant Emgu 3.0 64 bits et la seule chose que je dois faire pour résoudre ce problème est de changer le type de build dans mon projet en x64.
reportez-vous à http://www.codeproject.com/Articles/257502/Creating-Your-First-EMGU-Image-Processing-Project
espère que cela aide quelqu'un.
Un autre cas qui m'est arrivé c'est que j'avais un package NuGet qui a été installé mais n'est pas chargée pour mon projet et les références air bien mais au moment de l'exécution, j'ai eu l'TypeInitializationException.
-gérer les packages NuGet
-horloge gérer sur le paquet
-cochez la case avec le projet en cours.
Ce problème se produit également si vous êtes en utilisant OpenCV DLL compilé avec le support GPU, mais votre PC ne dispose pas d'un GPU, par exemple, si vous utilisez un ordinateur portable avec processeur Intel chipset graphique.
Dans ce cas, vous pouvez utiliser l'ancienne version 2.4.0 qui offre encore DLL sans support GPU:
https://sourceforge.net/projects/emgucv/files/emgucv/2.4.0/libemgucv-windows-x64-2.4.0.1717.zip
Il suffit de copier le cvextern.dll fichier à partir du dossier x64 si vous utilisez un système d'exploitation 64 bits, puis de le copier dans le debug dossier de votre projet.
Remarque: le Faire manuellement, car "ajouter un élément existant" ne pas la copier.