私は opencv、C++、および Eclipse CDT スターターです。opencvを学ぶためにチュートリアルに従っていました。しかし、プログラムのコンパイルには成功したものの、実行後すぐにクラッシュしてしまいました。関連する多くの Q&A を読みましたが、有効な解決策が得られませんでした。どんな提案でも大歓迎です。以下は、参照用の仕様です。
システム設定
- OS : 32 ビット Windows 7 Professional (仮想マシン)
- IDE : Eclipse Kepler 用の CDT 8.2.0
- C/C++ コンパイラ: mingw32-gcc (4.8.1)
- OpenCV パッケージ: opencv2.4.6
詳細な手順
- ダウンロードして抽出したEclipse
- C:\MinGW に MinGW をインストールします。システムパス[PATH]に「C:\MinGW\bin」を設定
- C:\opencvにOpenCVをダウンロードして実行。システムパス[PATH]に「C:\opencv\build\x86\mingw\bin」を設定
- Eclipse を起動し、Eclipse で:
- File>New>C++ Project : Project name->OpenCVTest、Project Type->Hello World C++ Project、Toolchains->MinGW GCC
- 終了
- [プロジェクト] > [プロパティ] > [C/C++ ビルド] > [設定] > [ツール設定] > [GCC C++ コンパイラ] > [インクルード] > [インクルード パス (-I)]で、「C:\opencv\build\include」を追加しました。
- Project>Properties>C/C++ Build>Settings>Tool Settings>MinGW C++ Linker>Libraries>Libraries (-l)で、opencv_core246、opencv_highgui246、opencv_imgproc246 を 1 つずつ追加しました。
- Project>Properties>C/C++ Build>Settings>Tool Settings>MinGW C++ Linker>Libraries>Libraries search path (-L)に「C:\opencv\build\x86\mingw\lib」を追加しました。
OpenCVTest.cpp ファイルの内容を次の内容に置き換えました。
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main( int argc, char** argv ) { if( argc != 2) { cout <<" Usage: display_image ImageToLoadAndDisplay" << endl; return -1; } Mat image; image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file if(! image.data ) // Check for invalid input { cout << "Could not open or find the image" << std::endl ; return -1; } namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display. imshow( "Display window", image ); // Show our image inside it. waitKey(0); // Wait for a keystroke in the window return 0; }
プロジェクトをビルドし、次のコンソール出力を取得しました (成功したと仮定):
Info: ビルドには内部ビルダーが使用されています g++ "-IC:\opencv\build\include" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\OpenCVTest.o" "..\src\OpenCVTest .cpp" g++ "-LC:\opencv\build\x86\mingw\lib" -o OpenCVTest.exe "src\OpenCVTest.o" -lopencv_core246 -lopencv_highgui246 -lopencv_imgproc246
生成された .exe をイメージ パスを渡さずに実行すると (動作するはずです)、プログラムは次のプロンプトでクラッシュしました。
問題の署名: 問題イベント名: APPCRASH アプリケーション名: OpenCVTest.exe アプリケーション バージョン: 0.0.0.0 アプリケーション タイムスタンプ: 5230da00 障害モジュール名: libstdc++-6.dll 障害モジュール バージョン: 0.0.0.0 障害モジュール タイムスタンプ: 522c646d 例外コード: c0000005 例外オフセット: 0001df4b OS バージョン: 6.1.7600.2.0.0.256.48 ロケール ID: 1033 追加情報 1: 4c0d 追加情報 2: 4c0d4d78887f76d971d5d00f1f20a433 追加情報 3: 4c0d 追加情報 4: 4c0d4d78887f7201d901d901