2011-10-30 34 views
1

次のコードを実行すると、イメージが保存され、それらが表示され、ディレクトリに表示されますが、 20個のウィンドウのカスケード、いずれもロードしたい画像はありません。すべてのウィンドウはグレーだけです。openCVのcvLoadImage()+ cvShowImage()は灰色のボックスを表示します

for(int i = 1; i <= 20; i++) 
    { 
    img = cvQueryFrame(capture); 
    num = intToString(i); 
    fname = base + num + jpg; 
    winName = base + num; 

    cvSaveImage(fname.c_str(), img); 
    //img = cvLoadImage(fname.c_str(), -1); 
    cvNamedWindow(winName.c_str(), CV_WINDOW_AUTOSIZE); 
    cvMoveWindow(winName.c_str(), 15*i, 15*i);  //cascade windows 
    cvShowImage(winName.c_str(), img); 
    } 

私はそれを保存した後の画像をリロードしてみたところ、私がコメントアウトしている行があるが、私はまだ同じ結果を得ます。誰でも私の問題が何であるか知っていますか?

+0

IIRC 'cvQueryFrame'は内部イメージへのポインタを返します。あなたが 'cvCloneImage'を使って、代わりにクローンを表示すれば動作します(クローンイメージは後で解放する必要があります)? – user786653

+0

cvQueryFrameはIplImage *を返します。私はあなたの提案を試みたし、いいえ、私は同じ結果を得る。 cvCloneImageもIplImage *を返すようです。また、教科書によると、(http://opencv.willowgarage.com/documentation/basic_structures.html#cvarr、http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/ref/ OpenCVRef_Highgui.htm#decl_cvShowImage)cvShowImage()は引数としてIplImage *を受け入れます。 –

+0

私が言及していたのは、[documentation](http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9)の部分でした。 5/docs/ref/OpenCVRef_Highgui.htm#decl_cvQueryFrame) "グラブされたフレームは内部的に保存されています"と表示されます。あなたのコードですぐに何かが間違っているのを見なかったので、それが原因かもしれないと思ったが、私はそうは思わない。 – user786653

答えて

0

私はこの問題をcvWaitKey()と呼んで解決しました。文書番号:注:この関数は、HighGUIのイベントをフェッチして処理できる唯一のメソッドです。通常のイベント処理では定期的に呼び出す必要があります。

関連する問題