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);
}
私はそれを保存した後の画像をリロードしてみたところ、私がコメントアウトしている行があるが、私はまだ同じ結果を得ます。誰でも私の問題が何であるか知っていますか?
IIRC 'cvQueryFrame'は内部イメージへのポインタを返します。あなたが 'cvCloneImage'を使って、代わりにクローンを表示すれば動作します(クローンイメージは後で解放する必要があります)? – user786653
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 *を受け入れます。 –
私が言及していたのは、[documentation](http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9)の部分でした。 5/docs/ref/OpenCVRef_Highgui.htm#decl_cvQueryFrame) "グラブされたフレームは内部的に保存されています"と表示されます。あなたのコードですぐに何かが間違っているのを見なかったので、それが原因かもしれないと思ったが、私はそうは思わない。 – user786653