2
我試圖通過OpenCV庫的方法來處理視頻,並用imshow
方法顯示這些幀,這裏沒有問題。如何通過Qt gui應用程序顯示視頻的幀?
但是當涉及到與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);
}
感謝阿諾德,它的工作,至少現在它對我有用。除此之外,做這項工作的最佳方法是什麼?是否使用Qlabel來顯示幀是一種可用且適合的方式來處理這項工作?(我不這麼認爲,我使用Qlabel是因爲我不知道QT那麼好) – Horizon1710 2012-04-24 23:57:26
不幸的是,我沒有一個好的方法來解決您的問題去做吧。我沒有做過像Qt一樣的實時視頻要求。 – 2012-04-25 00:20:13
儘管這是一個老問題,但我只想指出這個答案(http://stackoverflow.com/a/2671834/1990758)可能有所幫助。 – Energy 2016-03-02 08:07:42