QT5.7+opencv3.0做的简易视频播放器

来源:互联网 发布:软件小站的解压密码 编辑:程序博客网 时间:2024/05/17 16:16

利用 QT中QTimer进行刷新。

//main.cpp#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    MainWindow w;    w.show();    return a.exec();}

//mainwindow.cpp#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);     timer   = new QTimer(this);    QObject::connect(timer,SIGNAL(timeout()),this,SLOT(readFrameSlot()));}MainWindow::~MainWindow(){    delete ui;}void MainWindow::on_pushButton_clicked(){    capture.open(0);//"1.avi"       if( !capture.isOpened())       {          qDebug()<< "open camera error"<<endl;          this->close();       }       else       {        timer->start(33);       }}void MainWindow::on_pushButton_2_clicked(){    timer->stop();    ui->label->setPixmap(QPixmap());     this->close();}void MainWindow::readFrameSlot(){    capture >> frame;    if(!frame.empty())    {        img = QImage((const unsigned char*)(frame.data),frame.cols,frame.rows,                     QImage::Format_RGB888).rgbSwapped();        img = img.scaled(                            ui->label->width(),                            ui->label->height(),                            Qt::IgnoreAspectRatio,                            Qt::FastTransformation                        );//调整图片大小,使图片和显示的label控件一样大        ui->label->setPixmap(QPixmap::fromImage(img));    }}
//mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QDialog>#include <QDebug>#include <QTimer>#include <QImage>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace cv;namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();    Mat frame;//video frame      VideoCapture capture;      QTimer *timer;      QImage img;private slots:      void on_pushButton_clicked();      void on_pushButton_2_clicked();      void readFrameSlot();private:    Ui::MainWindow *ui;};#endif // MAINWINDOW_H

若出现UI什么问题大部分都是都是ui界面文件中的控件名字与代码中不一致导致的。

1 0
原创粉丝点击