私は次のコードを使用して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
http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS201 の指示に従いましたが、それでもまったく同じ問題に固執していたので、ここでそれを解決しました。
MSVC 2010 Expressエディションを取得しました。
Win 32 OpenCV 2.2バイナリを取得し、デフォルトの場所にインストールしました。
新しいプロジェクトを作成しました。
プロジェクトのセットアップ
プロジェクト-> 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をデバッグモードで実行するときに説明した問題に遭遇しました。最後の手順は、表示されたらすぐにわかります。
リンカ->一般...「ライブラリ依存関係入力を使用」を「はい」に設定
お役に立てれば。
C:\OpenCV2.0\bin
を[〜#〜] path [〜#〜]環境変数に追加するだけです
または
OpenCVをインストールすると、
デフォルトのオプションではないAdd OpenCV to the system PATH for current user
オプションを選択します
ちょうどあなたの情報のために、「パス」を追加した後、私のwin7のために私はそれを動作させるためにそれを再起動する必要があります。
Visual Studio 2013では、これをEnvironment Variables
に追加してから、Restart
に追加する必要があります。これは、.dllファイルがある場所のパスです。
私はopencvで多くの問題を抱えており、恐ろしい4-6ヶ月後に成功しました。これは私が経験した最後の問題ですが、上記のすべてが機能しませんでした。私のために働いたのは、opencv_core2 * .dll(および、これも含めて要求するopencv_highgui2 * .dll)をリリース(またはデバッグフォルダー-想定しています。これをテストしていない)にコピーアンドペーストするだけでした。 )アプリケーションファイルがあるプロジェクトのフォルダ。
お役に立てれば!
必要なDLLファイル(またはファイル)のフォルダーをシステムの「環境変数」の「パス」に追加するだけです。問題は100%解決されます。私もこの問題を抱えていました。
binフォルダーを開き、.dllファイルを作業中のフォルダーにコピーして貼り付けてください。問題を解決する必要があります。
これは死んだ馬を復活させるようなものかもしれません。しかし、まさにそうです、これらのタイプの質問に対する答えが単にdllをsystem32フォルダに入れる理由は、そのフォルダがosのシステムパスにあるからです。
OSにパスリンクを提供することは、実際にはベストプラクティスです。
Windows 10の場合
opencv\build\x86\vc12\binフォルダーにopencv_core248およびその他のdllがあります。必要なDLLをsystem32フォルダーにコピーするだけです。そして、アプリはすぐに動作するはずです!それが役に立てば幸い。
@Marcの答えについては、VCはOSからのパスを使用します。VCのライブラリパスにパスを追加しましたか。通常はDLLをプロジェクトに追加し、新しい場合はコピーします。ビルド上で、それは私にとって非常にうまく機能します。