Je reçois cette erreur
L'initialiseur de type pour 'Emgu.CV.CvInvoke' a généré une exception.
quand j'essaie d'utiliser Emgu CV. J'ai essayé tout ce que je pouvais imaginer pour y remédier mais cela donne toujours la même erreur, et lorsque je clique sur un bouton,
La référence d'objet n'est pas définie à une instance d'un objet.
C'est le code que j'essaye:
void ProcessFunction(object sender, EventArgs e)
{
imgOrg = capturecam.QueryFrame();
if (imgOrg == null) return;
imgProc = imgOrg.InRange(new Bgr(50, 50, 50), new Bgr(255, 255, 255));
imgProc = imgProc.SmoothGaussian(9);
imageBox1.Image = imgOrg;
imageBox2.Image = imgProc;
}
Qu'est-ce que j'aurais pu faire de mal et comment puis-je résoudre ce problème? Merci!
J'ai eu le même problème. Mon exception interne était "Impossible de charger DLL 'opencv_core290'".
Vous devez copier les dossiers x86 et x64 de "yourEmguFolder/bin" dans le répertoire de sortie de votre projet (bin). Ensuite, reconstruisez le projet et exécutez-le.
Selon emgu wiki
Il est probablement impossible de charger les dépendances non gérées DLL. Quelques suggestions
Copiez et collez toutes les dll non gérées dans le dossier bin de votre installation EMGU là où se trouve votre fichier exe (dossier Release ou Debug de votre dossier de projet).
Dans mon cas, les dll non gérées sont à "C:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\bin\x86"
Vous devez d’abord ajouter trois bibliothèques à votre projet . Opencv_core290.dll, opencv_highgui290.dll, opencv_imgproc290.dll. Ici, 290 fait référence à votre version ouverte. Après ce changement dans leur propriété "Ne pas copier" à "Copier toujours". que sauvegarder votre projet. Après cela, allez à l'emplacement suivant. Si votre machine est en 64 bits, rendez-vous au dossier suivant "C:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\bin\x64" ou si vous utilisez un système d'exploitation 32 bits, allez à "C:\Emgu\emgucv- windows-universal-cuda 2.9.0.1922\bin\x86 "et copiez toutes les dll de ce dossier et collez-les dans votre dossier Votre projet/bin/debug /. que de reconstruire votre projet. Cela fonctionnera bien.
Bonne chance!!!!
vous devez ajouter une dépendance à la DLL dans le projet et modifier ' copier dans le répertoire de sortie ' propriété en 'toujours copier' (ajouter -> élément existant) de Emgu\emgucv-windows-universal-cuda\x86
dans mon projet, ajoutez: opencv_core290.dll, opencv_highgui290.dll, opencv_ffmpeg290.dll, opencv_imageproc290.dll et cudart32_55.dll
J'ai eu le même problème dans ma machine 32 bits pendant 3 jours. J'ai résolu ce problème en copiant simplement toutes les dll dans le dossier system32 des dossiers bin et x86 et cela a fonctionné. On dirait qu'il existe des dll qui dépendent d'autres dll et du moment où vous transférez tout cela fonctionne. Je n'ai pas eu le temps de savoir lequel.
Trouvé ceci sur c #, VS 2017, version emgu 3.2.0.2682
Essayé une construction simple sur AnyCPU et a reçu l'exception de format incorrect . J'ai donc essayé exception de format incorrect x86 en raison de suggestions possibles dans les commentaires. Enfin, je l'ai mis en x64 et cela a bien fonctionné.
Pour moi, le problème a été résolu en cliquant dans Visual Studio:
Menu -> Projet -> Propriétés -> Construire -> Préférer 32 bits.
Ce devait être un problème avec emgu (probablement x86) et mon système d'exploitation x64).
vous pouvez utiliser LD_LIBRARY_PATH
pour le résoudre:
ouvrez l'avertissement et vérifiez ce qui manque à votre programme
localiser le chemin
$ local # pour trouver le chemin de la bibliothèque
Dans votre IDE, définissez la variable d'environnement LD_LIBRARY_PATH
sur le chemin de la bibliothèque, (j'utilise monodevelop, le chemin est Exécuter -> Exécuter avec -> Paramètres personnalisés ...)
ça marche bien maintenant :)
Si cela ne fonctionne pas sur Windows Server, vous devez activer UI Desktop Experience.