私は本当に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();
}
}
}
次のエラーが発生します:
必要なすべてのdllを.exeフォルダーに確認して持っています
これと同じ問題をしばらく経験した後、これを解決するための手順( TypeInitializer Exception )が不完全であることがわかりました。
基本的なアプリの場合、.EXEのディレクトリにcvextern.dll, Emgu.CV.dll, Emgu.CV.UI.dll, Emgu.Util.dll
が必要です。
.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をすべて含めると、アプリはすぐに機能します。
私はEmgu3.0 64ビットを使用していますが、この問題を修正するために必要なのは、プロジェクトのビルドタイプをx64に変更することだけです。
プロジェクトの名前->プロパティ->ビルド->プラットフォームターゲット->x64
http://www.codeproject.com/Articles/257502/Creating-Your-First-EMGU-Image-Processing-Project を参照してください
それが誰かを助けることを願っています。
この問題は、GPUサポートでコンパイルされたOpenCV DLLを使用しているが、PCにGPUがない場合、たとえばIntelグラフィックチップセットを搭載したポータブルコンピューターを使用している場合にも発生します。
この場合、GPUサポートなしでDLLを提供する古いバージョン2.4.0を使用できます:
https://sourceforge.net/projects/emgucv/files/emgucv/2.4.0/libemgucv-windows-x64-2.4.0.1717.Zip
私に起こった別のケースは、インストールされているがプロジェクト用にロードされていないNuGetパッケージがあるため、参照は良好に見えましたが、実行時にTypeInitializationExceptionが発生しました。
-NuGetパッケージを管理する
-パッケージの時計管理
-現在のプロジェクトのチェックボックスをオンにします。
64ビットOSを使用している場合は、x64フォルダーからcvextern.dllファイルをコピーしてから、プロジェクトのdebugフォルダーにコピーするだけです。
注: "既存のアイテムを追加"はコピーしないため、手動で実行してください。