2012-01-06 9 views
1

を示さなかったが、ここでは完全を構築する私のコード(OpenCVのドキュメントの最初のDisplayImage.cppコード)C++ EclipseのOpenCVの:.exeファイルとバイナリ生成し、ない画像が

/* 
* DisplayImage.cpp 
* 
* Created on: Dec 25, 2011 
*  Author: Arcturus */  
#include <iostream>  
#include <opencv2\opencv.hpp> 

using namespace cv; 

using namespace std; 

int main(int argc, char** argv){ 

    Mat image; 

    image = imread(argv[1], 1); 

    if(argc!=2 || !image.data){ 

     cout<<"no image data"; 

     return -1; 
    } 

    namedWindow("Display Image", CV_WINDOW_AUTOSIZE); 

    imshow("Display Image", image); 

    waitKey(10000); 

    return 0; 
} 

だ、実行可能ファイルは、生成されたバイナリを生成しました。

DisplayImage Debugフォルダに画像(blackbuck.bmp)があります。コードを実行するには、[Run]> [Run Configurations]に移動します。 DisplayImage Debug exeファイルを選択し、blackbuck.bmpを入力します(絶対パスでも試してみてください)。

コンソールの上部に、DisplayImage Debugというメッセージが表示されます。そして、それはまったくイメージを表示しません。ここで何が間違っているのでしょうか?

私はEclipseでCDTを使用しています。

ありがとうございました!

EDIT:Problem solved !!!私はライブラリフォルダから、実行可能ファイルが生成されていたフォルダにすべてのdllファイルをコピーする必要がありました。私はまだ、なぜ、理解していない。結局のところ、リンカーはすでにすべてのdllを含むライブラリフォルダをリンクしていました。もし誰かがこれを説明できるなら、将来のデバッグのために大きな助けになるでしょう。ありがとうございましたkarlとmevotron時間:

編集2:msdnのWebサイトから: "DLLを使用すると潜在的に不利な点は、アプリケーションが自己完結型ではなく、別のDLLモジュールシステムは、プロセス起動時に見つからないDLLが必要で、ユーザーにエラーメッセージを出す必要がある場合は、ロード時の動的リンクを使用してプロセスを終了します。この状況では、システムは実行時の動的リンクを使用してプロセスを終了しません。不足しているDLLによってエクスポートされた関数は、プログラムで使用できません。

これは私の質問に答えると思います。おそらく、これはeclipseがロード時の動的リンクを使用することを意味します。

+0

1)画像の大きさはどれくらいですか? 2)Windowsでは、完全なパスに 'C:\\ folder \\ another_folder \\ img.png'のような二重スラッシュを入れてください。 – karlphillip

+0

Hey Karl、750キロバイトの画像です。私は絶対的な道を試みましたが、まだ行きません。私はそれを得ていない。実行ファイルはそこにあります、バイナリはそこにあります、なぜ画像が表示されません、私は単に推測することはできません。 – arcturus611

+0

Eclipse内から実行している場合は、イメージを.exeディレクトリに置くのではなく、ソースコードと同じフォルダに置く必要があります。 – karlphillip

答えて

0

どのようにMinGWでOpenCVをコンパイルしましたか(つまり、CMake設定時にBUILD_TYPESSE*オプションが設定されました)?私が尋ねる理由は、MinGWビルドバージョンを使用すると、highguiオペレーションがクラッシュするSSE最適化の既知のバグがあることです。私の他の答えはhereを参照してください。

+0

こんにちはmevatron、私のCMAKE_BUILD_TYPEはデバッグされ、私のSSEオプションがチェックされています。そして、あなたはそれについて言及しました。私は、DisplayImage.exe blackbuck.bmpを使ってコマンドラインから実行しようとすると、 "libopencv_highgui231d.dllとして実行できないプログラムです"というメッセージが表示されることに気付きました。インストールを試みてください... 'しかし、このファイルはライブラリフォルダにあります。 – arcturus611

+0

ちょっとmevatron、私はあなたの提案を他の投稿から取り出し、SSEを無効にしました。私はCMakeから再度構成して生成しました。 Eclipseで変更が有効になるのですか?それはまだ私にイメージを表示しないので。 – arcturus611

+0

OpenCV DLLが実行可能ファイルのあるディレクトリにあるか、OpenCV DLLのパスがPath変数に含まれているかを確認してください。 Path変数を設定したときにEclipseを開いている場合は、Eclipseを再起動して新しい環境変数を使用する必要があります。 – mevatron

関連する問題