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

    xiaoxiao2021-03-25  61

    利用 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_OBJECT public: 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界面文件中的控件名字与代码中不一致导致的。

    转载请注明原文地址: https://ju.6miu.com/read-33747.html

    最新回复(0)