3

opencvで画像を表示したいと思います。「namedWindow」を使用してウィンドウを作成し、「imshow」を使用して画像を表示します。コードの最後に「cin」を使用しているため、プログラムは自動的に終了しません。私のコードの一部は次のようになります。

namedWindow("image");
imshow("image",aa);
waitKey(500);
cin >> aaa;
return 0;

waitKey ステートメントを削除すると、画像が表示されなくなります。なぜそうなのか?次のステートメント (cin >> aaa) は、imshow の実行後に実行されませんか? なぜ遅延が不可欠なのですか?

4

2 に答える 2

3

それは本質的な遅延ではなく、waitkey 内の隠された機能です。

imshow は画像をコピーするだけですが、waitkey は最終的にそれを blit します (または、そうするために OS の必要に応じてメッセージを送信します)。

そのため、imshow を使用する場合は、いずれにしても waitkey を呼び出す必要があります。1 (ミリ秒) は、連続レンダリングのためにここに指定できる最小値です。0 または -1 は、キーを押すまでブロックします。

さらに、waitkey はその img ウィンドウでのキー押下をリッスンし、cin はコンソール ウィンドウからの入力をリッスンします。

于 2013-09-06T08:52:22.583 に答える
1

cv::WaitKEy(0) 画像はそこにとどまります

于 2013-09-06T08:41:35.333 に答える