2013-07-19 3 views
2

Я играю видео на этикетке в Qt. Я использую Open CV для этого же. Видео воспроизводится, но оно слишком быстро. Как уменьшить скорость воспроизведения. Я попытался использовать setCaptureProperty, но он не работает. Мой код выглядит следующим образомВидео слишком быстро в Qt с использованием OpenCV

HeaderFile Объявления:

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()); 
    } 
} 

Кто-то, пожалуйста, руководство по этому ... Спасибо :)

+0

Используйте 'cvWaitKey (100);' в каждом кадре. Он добавляет 100 мс задержки. – William

+0

Пробовал ... Не работает ... Я написал цикл while ... – Sid411

ответ

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()); 
Смежные вопросы