OpenCVがcvLoadImage(“ string.ext”)を拒否するのにcvLoadImage(argv [1])を受け入れるのはなぜですか?

StackOverflow https://stackoverflow.com/questions/445295

  •  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 関数を使用して内容を確認できます。それはおそらく犯人を指し示します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top