使用 OpenCV 在 Qt 中视频太快

Posted

技术标签:

【中文标题】使用 OpenCV 在 Qt 中视频太快【英文标题】:Video too fast in Qt using OpenCV 【发布时间】:2013-07-19 09:50:26 【问题描述】:

我在 Qt 的标签上播放视频。我也在使用 Open CV。视频正在播放,但速度太快。如何降低播放速度。我尝试使用 setCaptureProperty 但它不起作用。我的代码如下

头文件声明:

CvCapture *capture;
IplImge *frame;
cv::Mat source_image;
cv::Mat dest_image;
QTimer *imageTimer;

按钮点击槽:

void MainWindow::onButtonClick()

   capture = cvCaptureFromFile("/mp.mp4");
   while(capture
  
    frame = cvQueryFrame((capture);
    source_image = frame;
    cv::resize(source_image,source_image,cv::Size(420,180),0,0);
    cv::cvtColor(source_image,source_image,CV_BGR2RGB);
    QImage qimg = QImage((const unsigned char*)source_image.data,source_image.cols,source_imge.rows,QImage::Format_RGB888);
   label->setPixmap(QPixmap::fromImage(qimg));
   label->resize(label->pixmap()->size());
  

请有人指导...谢谢:)

【问题讨论】:

在每一帧中使用cvWaitKey(100);。它增加了 100 毫秒的延迟。 试过了...不行...我用while循环写的... 【参考方案1】:

我以这种方式使用 Qtimer,而不是 while 循环,如下所示:

void on_button_click()

    cap.open(0);
    timer->start(50);

void readframe()   

    //display image in label 
    cap>>frame;
    Mat2QImage(); // convert mat to QImage;
    ...
    //setpixmap();
    ...

在主窗口中,

connet(timer,timeout(),this,readframe());

【讨论】:

以上是关于使用 OpenCV 在 Qt 中视频太快的主要内容,如果未能解决你的问题,请参考以下文章

opencv使用问题总结

vs+qt+opencv海康摄像头实时预览

视频中的Opencv马赛克

使用 opencv 和 Qt 录制视频

Qt + OpenCV 使用 std::thread 播放视频

qt Android中使用opencv处理视频