【发布时间】:2020-09-19 21:09:31
【问题描述】:
第一个代码 在此代码中,VideoCapture cap 没有采用执行 QFileDialog 后获得的文件名(包含视频路径),即使用 cap.open("fileName") ,使用 cap.open("G:/mixer.avi" 时代码未执行),代码正在执行。表示如果在 cap.open() 中直接给出视频路径,则代码正在执行,但它不采用 QFileDialog 输出,即文件名作为输入
void MainWindow::on_pushButton_clicked()
{
if(ui->radioButton->isChecked()) {
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Video"), "G://", "All files (*.*);Video files(*.*)");
ui->lineEdit->setText(fileName);
VideoCapture cap
// cap.open("G:/mixer.avi");
cap.open("fileName");
connect(timer, SIGNAL(timeout()), this, SLOT(update_window()));
timer->start(20);}}
void MainWindow::update_window()
{
cap >> frame;
cvtColor(frame, frame, cv::COLOR_BGR2RGB);
qt_image = QImage((const unsigned char*) (frame.data), frame.cols, frame.rows,
QImage::Format_RGB888);
ui->label->setPixmap(QPixmap::fromImage(qt_image));
ui->label->resize(ui->label->pixmap()->size());
}
第二个代码:
在带有 QFileDialogbox 的这段代码中,视频正在显示,但在 QLabel 中没有显示。如何在 QMultimedia 中添加 QLabel。
void MainWindow::on_pushButton_2_clicked()
{
if(ui->radioButton_2->isChecked()) {
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Video"), "G://", "All files (*.*);Video files(*.*)");
ui->lineEdit->setText(fileName);
player = new QMediaPlayer;
vw=new QVideoWidget;
player->setVideoOutput(vw) ;
this->setCentralWidget(vw);
player->setMedia(QUrl::fromLocalFile(fileName));
vw->show();
player->play();
}
}
【问题讨论】:
标签: c++ qt opencv qlabel qmediaplayer