私はC#でemguとHaarCascadeを使用してプログラムをデバッグしようとしています。私はそのような例外を取得しています:
ロードできませんDLL 'cvextern':指定されたモジュールが見つかりませんでした。(HRESULTからの例外:0x8007007E)
プロジェクトにファイルcvextern.dllを追加し、ファイルのプロパティで「常にコピー」と「新しい場合はコピー」の両方のオプションを試しました。また、ビルドはプラットフォームx64にあります。
これが部分的に私が書いたものです:
private void Load_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Photo Files (*.jpg)|*.JPG";
dlg.CheckFileExists = true;
if (dlg.ShowDialog() == DialogResult.OK)
{
Image<Bgr, Byte> My_Image = new Image<Bgr, byte>(dlg.FileName);
HaarCascade face = new HaarCascade("haarcascade_frontalface_alt.xml");
例外は最後の行にあります。
あなたが受け取るエラーはcvexternだけにあるのではなく、このdllは他のopencv dllのほとんどすべてを実際にポイントしており、すべてが必要です。このエラーが発生すると、プロジェクトに次のdllが必要になります。
「220」はバージョン番号であり、アップデートに応じて変更されることに注意してください。
このエラーは、 codeproject here に関する私の記事で他の人と一緒にカバーされています。
他の問題があれば私に知らせてください、
乾杯、
クリス
このエラーはEmgu CV 3.1
で私の側に現れ、この問題について次の実用的な解決策を見つけました。
アプリケーションディレクトリcvextern.dll
に\bin\Debug\
をコピーします
お役に立てれば。
バージョン2.3の場合、リストはopencv_ffmpeg.dllおよびopencv_flann231.dllとともに増加します。
Cvextern.dllは、x86の場合はWindows\System32、x64の場合はWindows\SysWOW64にある必要があります。 PS:VS2015でNuGetパッケージ 'EmguCV' v3.1.0.1を使用しました
私の場合、64ターゲットに切り替えたのに気づかなかったので、x86に移行するとこれがなくなりました
このエラーの私の問題は、VS2015が32ビットでWebプロジェクトを実行していたことでしたIIS Express。修正は、64ビットを使用していることを確認することでしたIIS Express
新しいマシンをセットアップするときに思い出させるために、起動時にこのコードを追加しました
if (IntPtr.Size != 8)
{
throw new Exception("Change VS options to ensure 64bit IIS Express");
}