2

Qtのラベルでビデオを再生しています。同じためにOpen CVを使用しています。ビデオは再生されていますが、速すぎます。再生速度を遅くする方法を教えてください。setCaptureProperty を使用してみましたが、機能していません。私のコードは次のとおりです

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

誰かがこれについて案内してください...ありがとう:)

4

1 に答える 1

1

次のように、while ループではなく、この方法で Qtimer を使用します。

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());
于 2014-03-24T15:34:46.750 に答える