OpenCVライブラリのメソッドを使用してフレームを再生してビデオを処理し、これらのフレームをimshow
opencv/highguiのメソッドで問題なく表示しようとしています。
しかし、Qt-gui アプリでリアルタイムに表示するとなると、どうしようもありませんでした。
プログラムは、openfile ダイアログからビデオのパスを取得し、while ループ内でビデオのフレームを取得して処理を開始します。プロセス ステップの後、これらの処理されたフレームを QLabel に表示しようとすると、gui-app の QLabel には (ビデオの長さに沿って) 何も表示されず、ビデオの最後の最後のフレームのみが表示されます。各フレームのラベルを更新/更新しようとしましたが、うまくいきませんでした。
私は何かを見逃していますか?それとももっと便利な方法がありますか?
私のコードの必要な部分は以下です。前もって感謝します。
bool stop=false;
cv::VideoCapture capture("a.avi");
cv::Mat cur_frame;
while (!stop) {
//...
capture.read(cur_frame);
//process steps..
QImage img= QImage((const unsigned char*)(cur_frame.data),
cur_frame.cols,cur_frame.rows,
QImage::Format_RGB888);
ui->label->setPixmap(QPixmap::fromImage(img));
// resize the label to fit the image
ui->label->resize(ui->label->pixmap()->size());
//...
cv::waitkey(50);
}