0
#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("247.png")、空白のウィンドウが表示され、画像はゼロのままです

exe を実行し、引数として 247.png を指定すると、それはただダンディです。「247.png」をコードに入れてビルドし、Visual Studio 2008 で実行すると失敗します。コマンドプロンプトからビルドして実行すると、動作します。

どうしてこれなの?これを落とさずに前に進むのに少しうんざりしています。

4

3 に答える 3

2

名前をハードコーディングしたときに、「247.png」が現在の作業ディレクトリにあることを確認しますか?

Process Monitorなどでプログラムを実行して、実際に開かれているファイル(または存在する可能性のあるファイルI / Oエラー)を確認します。

質問にさらに情報を追加するために編集した後(VS2008から実行すると問題が発生します)、これはほぼ確実に問題です。VSがプログラムを開始する現在のディレクトリは、「247.png」ファイルがあるディレクトリではありません。

于 2009-01-15T01:26:37.117 に答える
0

あなたはあなたが何であるかを確認することができますcwdか?

関数を#include <direct.h>使用して、それが何であるかを確認できます。_getcwdそれはおそらくあなたを犯人に向けるでしょう。

于 2009-01-15T14:54:09.220 に答える
0

Project->Properties->Configuration Properties->Debugging の下に「Working Directory」フィールドがあります。それを実行したいディレクトリに設定すると、問題が解決するはずです。

于 2009-02-23T03:02:25.710 に答える