QT+opencv 录制视频,软件打包问题
环境 QT5.1.0 opencv3. 4.0
环境搭建不多说:
问题 代码如下:
int MainWindow::on_pushButton_clicked()
{
c=0;
cap1.open(c);
if (!cap1.isOpened())
{
timer->stop(); // 停止读取数据。
QMessageBox msgBox;
msgBox.critical(this,QString::fromLocal8Bit("出错!"),QString::fromLocal8Bit("打开出错!"));
return -1;
}else{
if(cap1.isOpened())
{
QString fileName = "E:/out.avi";
videowriter.open(fileName.toLocal8Bit().toStdString(), //路径
CV_FOURCC('M', 'P', '4', '2') ,
// CV_FOURCC('D', 'I', 'V', 'X') ,
// 0,
15, //帧率
Size(cap1.get(CAP_PROP_FRAME_WIDTH),
cap1.get(CAP_PROP_FRAME_HEIGHT)) //尺寸
);
timer->start(20);//启动计时器
QTimer *timer1 = new QTimer(this);
connect(timer1, SIGNAL(timeout()), this, SLOT(update()));
timer1->setSingleShot(true);
timer1->start(6000);
}
return 0;
}
}
void MainWindow::update()
{
cap1.release();
videowriter.release();
timer->stop();
int fou = cap1.get(CAP_PROP_FOURCC);
qDebug()<<"E:/out.avi"<<fou;
// QFile::rename("E:/out.avi","E:/"+QString::number(fou)+".avi");//切换文件名
}
int MainWindow::opencam()
{
cap1.read(frame1);
videowriter.write(frame1);
cvtColor(frame1, srcmat2, CV_BGR2RGB);
QImage img = QImage((const unsigned char*)srcmat2.data, // uchar* data
srcmat2.cols, srcmat2.rows, srcmat2.step, QImage::Format_RGB888);//格式转换
int a = ui->label->width();
int b = ui->label->height();
QImage ime = img.scaled(a, b);//自定义缩放
ui->label->setPixmap(QPixmap::fromImage(ime));
ui->label->show();
return 0;
}
代码没问题,在QTCreator运行,视频就可以存下来,但是用QT自带的打包软件打包的程序却不能存下视频。。。。。。。
开始以为是权限问题,后来以为是编码问题查来查去没头绪。
后来发现是打包的时候没有把opencv_ffmpeg340_64.dll这个dll打包,什么鬼,没有这个dll,也不提示,运行也十分流畅,就是保存不了视频,什么错都没有,不知是哪来的坑》》》》》》》》》》》》》》