web-dev-qa-db-ja.com

OpenCV-DLL欠落していますが、そうではありませんか?

私は次のコードを使用してOpenCVで基本的なプログラムを試しています:

#include "cv.h"
#include "highgui.h"

int main()
{
    IplImage* newImg;
    newImg = cvLoadImage("~/Apple.bmp", 1);
    cvNamedWindow("Window", 1);
    cvShowImage("Window", newImg);
    cvWaitKey(0);
    cvDestroyWindow("Window");
    cvReleaseImage(&newImg);
    return 0;
}

これを実行すると、

Libcxcore200.dllがコンピューターにないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてください。

しかし、私はこのDLLを見ることができます。それが存在します。リンカーの入力依存関係に次を追加しました

C:\ OpenCV2.0\lib\libcv200.dll.a C:\ OpenCV2.0\lib\libcvaux200.dll.a C:\ OpenCV2.0\lib\libcxcore200.dll.a C:\ OpenCV2.0\lib\libhighgui200.dll.a

何が得られますか? Visual Studio 2008を使用しています。

.dll.aファイルではなく.dllファイルをリンクすると、

致命的なエラーLNK1107:無効または破損したファイル:0x3F8で読み取ることができませんlibcv200.dll

32
charles-22

http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS201 の指示に従いましたが、それでもまったく同じ問題に固執していたので、ここでそれを解決しました。

  1. MSVC 2010 Expressエディションを取得しました。

  2. Win 32 OpenCV 2.2バイナリを取得し、デフォルトの場所にインストールしました。

  3. 新しいプロジェクトを作成しました。

  4. プロジェクトのセットアップ

    プロジェクト-> OpenCV_Helloworldプロパティ...構成プロパティ-> VC++ディレクトリ

    ディレクトリを含める...追加:C:\OpenCV2.2\include\;

    ライブラリディレクトリ...追加:C:\OpenCV2.2\lib;C:\OpenCV2.2\bin;

    ソースディレクトリ...追加:

    C:\OpenCV2.2\modules\calib3d\src;C:\OpenCV2.2\modules\contrib\src;C:\OpenCV2.2\modules\core\src;C:\OpenCV2.2\modules\features2d\src;C:\OpenCV2.2\modules\flann\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\highgui\src;C:\OpenCV2.2\modules\imgproc\src;C:\OpenCV2.2\modules\legacy\src;C:\OpenCV2.2\modules\ml\src;C:\OpenCV2.2\modules\objdetect\src;C:\OpenCV2.2\modules\video\src;
    

    リンカー->入力->追加の依存関係...

    デバッグビルドの場合:追加:

    opencv_calib3d220d.lib;opencv_contrib220d.lib;opencv_core220d.lib;opencv_features2d220d.lib;opencv_ffmpeg220d.lib;opencv_flann220d.lib;opencv_gpu220d.lib;opencv_highgui220d.lib;opencv_imgproc220d.lib;opencv_legacy220d.lib;opencv_ml220d.lib;opencv_objdetect220d.lib;opencv_video220d.lib;
    

この時点で、私は完了したと思いましたが、exeをデバッグモードで実行するときに説明した問題に遭遇しました。最後の手順は、表示されたらすぐにわかります。

リンカ->一般...「ライブラリ依存関係入力を使用」を「はい」に設定

お役に立てれば。

23
skoeberl

C:\OpenCV2.0\bin[〜#〜] path [〜#〜]環境変数に追加するだけです

または

OpenCVをインストールすると、

デフォルトのオプションではないAdd OpenCV to the system PATH for current userオプションを選択します

16
YOU

ちょうどあなたの情報のために、「パス」を追加した後、私のwin7のために私はそれを動作させるためにそれを再起動する必要があります。

14
Steven Du

Visual Studio 2013では、これをEnvironment Variablesに追加してから、Restartに追加する必要があります。これは、.dllファイルがある場所のパスです。

enter image description here

6
Sabri Meviş

私はopencvで多くの問題を抱えており、恐ろしい4-6ヶ月後に成功しました。これは私が経験した最後の問題ですが、上記のすべてが機能しませんでした。私のために働いたのは、opencv_core2 * .dll(および、これも含めて要求するopencv_highgui2 * .dll)をリリース(またはデバッグフォルダー-想定しています。これをテストしていない)にコピーアンドペーストするだけでした。 )アプリケーションファイルがあるプロジェクトのフォルダ。

お役に立てれば!

6
Opencv_newbie

必要なDLLファイル(またはファイル)のフォルダーをシステムの「環境変数」の「パス」に追加するだけです。問題は100%解決されます。私もこの問題を抱えていました。

4
Farzan

binフォルダーを開き、.dllファイルを作業中のフォルダーにコピーして貼り付けてください。問題を解決する必要があります。

1
somebody

これは死んだ馬を復活させるようなものかもしれません。しかし、まさにそうです、これらのタイプの質問に対する答えが単にdllをsystem32フォルダに入れる理由は、そのフォルダがosのシステムパスにあるからです。

OSにパスリンクを提供することは、実際にはベストプラクティスです。

Windows 10の場合

  1. ファイルエクスプローラーを開く
  2. 「このPC」を右クリックして、「プロパティ」を選択します
  3. 表示される[コントロールパネル\システムとセキュリティ\システム]ウィンドウで、左側のパネルから[システムの詳細設定]をクリックします。
  4. 次のウィンドウの下部で、「環境変数」ボタンをクリックします。
  5. 次のウィンドウには2つのパネルがあり、上部のパネルは現在のユーザーの変数を変更するためのものであり、下部のパネルはシステムの変数を変更するためのものです。下部のパネルで、変数「パス」を見つけてクリックして選択し、「編集」ボタンをクリックします。
  6. ここで、システムのさまざまなパスを作成、編集、削除、または更新できます。たとえば、システムにmingw32-makeを追加して、コマンドプロンプトからそのコマンドにアクセスするには、[新規]をクリックし、ビンへのパスに貼り付けます。パスの例、「D:\ Qt\Tools\mingw730_64\bin」、引用符も空白も追加なし。
  7. すべてのウィンドウで[OK]をクリックして変更を保存し、変更をロードするためにrebootコンピューターを選択します。

opencv\build\x86\vc12\binフォルダーにopencv_core248およびその他のdllがあります。必要なDLLをsystem32フォルダーにコピーするだけです。そして、アプリはすぐに動作するはずです!それが役に立てば幸い。

0
phoenix

@Marcの答えについては、VCはOSからのパスを使用します。VCのライブラリパスにパスを追加しましたか。通常はDLLをプロジェクトに追加し、新しい場合はコピーします。ビルド上で、それは私にとって非常にうまく機能します。

0
kenny