6

私は OpenCV の単純な Hello World を作成しようとしていますが、なぜそれが機能しないのかについてのアイデアが不足しています。

このコードをコンパイルして実行すると:

#include <cv.h>
#include <highgui.h> 
int main(int argc, char* argv[])
{
 IplImage* img = cvLoadImage( "myjpeg.jpg" );
 cvNamedWindow( "MyJPG", CV_WINDOW_AUTOSIZE );
 cvShowImage("MyJPG", img);
 cvWaitKey(0);
 cvReleaseImage( &img );
 cvDestroyWindow( "MyJPG" );
 return 0;
}

示された .jpg ファイルの代わりに、約 200x200 の灰色のボックスが表示されます。別のjpgを使用すると、同じ種類のウィンドウが表示され、無効なファイル名を入力すると、非常に小さなウィンドウが表示されます(予想通り)。

Windows 7 Professional で Visual Studio 2008 を使用しています。

ほとんどのサンプル プログラムは正常に動作するように見えるので、そのコードがサンプル jpg を正常にロードする方法について二重に混乱していますが、上記のコードでは動作しません (サンプル jpeg を試しても)。

アップデート

コンパイルによって生成された実行可能ファイルは正常に動作しますが、Visual Studio 2008 デバッガーは、デバッガーを実行しようとするたびに null ポインターを img に読み込みます (ファイルの場所が暗黙的か明示的かに関係なく)。

4

4 に答える 4

8

myjpeg.jpgデバッガーで実行しているときは現在のディレクトリが異なる可能性があるため、へのパスに問題があるようです。

既定では、Visual Studioデバッガーが使用する現在のディレクトリは.vcprojファイルを含むディレクトリですが、プロジェクトのプロパティで変更できます([デバッグ]-> [作業ディレクトリ])。

絶対パスを正しく渡すことを100%確信していますか?同じパスをに渡して、fopenも返されるかどうかを確認してくださいNULL。その場合、パスは正しくありません。

ライブラリが開こうとしているファイルを正確に確認したい場合は、にフィルターを設定してProjectMonitormyjpeg.jpgを使用できます。

于 2010-01-22T13:40:24.727 に答える
1

どのバージョンのOpenCVを使用していますか?最新(OpenCV2.0)でコードを試しましたが、正常に動作します。ここからOpenCV2.0をダウンロードできます。

最新のビルドが必要な場合は、ここからSVNでチェックアウトできます。

于 2010-01-22T13:18:59.550 に答える
0

HAVE_JPEGプリプロセッサ定義に追加してみてください。

于 2010-06-25T12:04:21.313 に答える
0

同じ問題が発生しました。デバッグ バージョンはイメージをロードしませんが、コンパイルしてリリースとしてリンクすると動作します。これが役立つことを願っています

于 2012-11-02T22:56:20.507 に答える