を示さなかったが、ここでは完全を構築する私のコード(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がロード時の動的リンクを使用することを意味します。
1)画像の大きさはどれくらいですか? 2)Windowsでは、完全なパスに 'C:\\ folder \\ another_folder \\ img.png'のような二重スラッシュを入れてください。 – karlphillip
Hey Karl、750キロバイトの画像です。私は絶対的な道を試みましたが、まだ行きません。私はそれを得ていない。実行ファイルはそこにあります、バイナリはそこにあります、なぜ画像が表示されません、私は単に推測することはできません。 – arcturus611
Eclipse内から実行している場合は、イメージを.exeディレクトリに置くのではなく、ソースコードと同じフォルダに置く必要があります。 – karlphillip