OpenCVがcvLoadImage(“ string.ext”)を拒否するのにcvLoadImage(argv [1])を受け入れるのはなぜですか?
-
22-07-2019 - |
質問
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
int main(int argc, char* argv[]){
cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE);
IplImage* image = 0;
->->image = cvLoadImage(argv[1]);<-<-
if(!image) printf("Unable to load image!");
cvShowImage("Window1", image);
char c = cvWaitKey(0);
cvReleaseImage(&image);
cvDestroyWindow("Window1");
return 0;
}
指定された行を cvLoadImage(&quot; 247.png&quot;)
に置き換えた場合、空白のウィンドウが表示され、画像はゼロのままです
exeを実行し、247.pngを引数として指定した場合、それは単なるダンディです。 &quot; 247.png&quot;を配置すると、コードに直接組み込み、Visual Studio 2008をビルドして実行すると、失敗します。コマンドプロンプトからビルドして実行すると、動作します。
これはなぜですか?これを落とさずに前進することに少し疲れています。
解決
プロジェクトの下-&gt;プロパティ-&gt;構成プロパティ-&gt;デバッグには、フィールド "Working Directory"があります。それを実行したいディレクトリに設定すると、問題が修正されます。
他のヒント
確かに&quot; 247.png&quot;名前がハードコーディングされている場合、現在の作業ディレクトリにありますか?
プロセスモニターなどのプログラムを実行して、ファイルが実際に開かれています(またはどのファイルI / Oエラーが発生している可能性があります)。
質問にさらに情報を追加するために編集した後(VS2008から実行すると問題が発生します)、これはほぼ間違いなくあなたの問題です。 VSがプログラムを起動する現在のディレクトリは、&quot; 247.png&quot;があるディレクトリではありません。ファイル。
cwd
が何であるかを確認できますか?
#include&lt; direct.h&gt;
を実行し、 _getcwd
関数を使用して内容を確認できます。それはおそらく犯人を指し示します。
所属していません StackOverflow