web-dev-qa-db-ja.com

c#プロジェクトでcvexternをロードできません

私は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");

例外は最後の行にあります。

19
dusm

あなたが受け取るエラーはcvexternだけにあるのではなく、このdllは他のopencv dllのほとんどすべてを実際にポイントしており、すべてが必要です。このエラーが発生すると、プロジェクトに次のdllが必要になります。

「220」はバージョン番号であり、アップデートに応じて変更されることに注意してください。

  • cudart64_32_16.dll
  • cufft64_32_16.dll
  • cvextern.dll
  • npp64_32_16.dll
  • opencv_calib3d220.dll
  • opencv_contrib220.dll
  • opencv_core220.dll
  • opencv_features2d220.dll
  • opencv_flann220.dll
  • opencv_gpu220.dll
  • opencv_highgui220.dll
  • opencv_imgproc220.dll
  • opencv_legacy220.dll
  • opencv_ml220.dll
  • opencv_objdetect220.dll
  • opencv_video220.dll

このエラーは、 codeproject here に関する私の記事で他の人と一緒にカバーされています。

他の問題があれば私に知らせてください、

乾杯、

クリス

21
Chris

このエラーはEmgu CV 3.1で私の側に現れ、この問題について次の実用的な解決策を見つけました。

アプリケーションディレクトリcvextern.dll\bin\Debug\をコピーします

お役に立てれば。

8
gyukov

バージョン2.3の場合、リストはopencv_ffmpeg.dllおよびopencv_flann231.dllとともに増加します。

1
no.oby

Cvextern.dllは、x86の場合はWindows\System32、x64の場合はWindows\SysWOW64にある必要があります。 PS:VS2015でNuGetパッケージ 'EmguCV' v3.1.0.1を使用しました

1
Fayçal Kadri

私の場合、64ターゲットに切り替えたのに気づかなかったので、x86に移行するとこれがなくなりました

0
twobob

このエラーの私の問題は、VS2015が32ビットでWebプロジェクトを実行していたことでしたIIS Express。修正は、64ビットを使用していることを確認することでしたIIS Express

新しいマシンをセットアップするときに思い出させるために、起動時にこのコードを追加しました

if (IntPtr.Size != 8)
{
     throw new Exception("Change VS options to ensure 64bit IIS Express");
}
0
fiat