2

C++ で opencv を使用していますが、質問があります。

cv::Matとで非常に簡単に可能な画像を表示したいと思いcv::imshowますcv::namedWindowcv::Matしかし、私はそれを見て、その間に更新できるようにしたい.

実際、画像を作成するコードを非常に頻繁に (自動的に) 実行し、更新されたバージョンの画像をウィンドウに表示したいと考えています。このウィンドウはプロジェクターで表示され、常に最新の画像が表示されます。コードが終了したら、そのウィンドウを閉じるまで最後の画像を表示できるようにしたいと考えています。

私のコードの簡略版:

for (int i=1; i < 1000; ++i){
cv::Mat output_projector = cv::Mat::zeros(480, 848, CV_8UC3);
//..
//change the output_projector
//..
cv::namedWindow("Send to projector", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
cv::imshow("Send to projector", output_projector);
cv::waitKey(1);
}

どうすればこれを達成できますか?

4

1 に答える 1

0

行ったのと同じように行いますが、waitKeyパラメーターの時間を少し増やしてみてください。たとえば、標準のムービーは25 fps、つまり4msなので、waitKey(4)を試してください。これが速すぎる場合は、より大きな値を試してください。

最後に画像を表示するには、ループの前に画像(およびウィンドウ)を初期化し、waitKey(0)最終的に呼び出す必要があります。

cv::Mat output_projector = cv::Mat::zeros(480, 848, CV_8UC3);
cv::namedWindow("Send to projector", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);

for (int i=1; i < 1000; ++i){
//..
//change the output_projector
//..
cv::imshow("Send to projector", output_projector);
cv::waitKey(10);
}
cv::imshow("Send to projector", output_projector);
cv::waitKey(0);
于 2012-10-26T14:11:39.363 に答える