1、qt application
2、qtvideoread.cpp中代码为:
#include "qtvideoread.h"
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include "opencv2/imgproc/imgproc.hpp"#include <QString>#include <QLabel>#include <QPainter>#include <QTimer>qtvideoread::qtvideoread(QWidget *parent, Qt::WindowFlags flags)
: QMainWindow(parent, flags){ ui.setupUi(this); // 初始化处理,建立QImage和frame的关联,开启定时器 capture.open("E:/studyvsqt/qtvideoread/0920_01.mov");//-1 需要加载所在电脑视屏 if (capture.isOpened()) { capture >> frame; if (!frame.empty()) { cv::cvtColor(frame, frame, CV_BGR2RGB); cv::flip(frame, frame, 1); image = new QImage((const unsigned char*)(frame.data), frame.cols, frame.rows, QImage::Format_RGB888); timer = new QTimer(this); timer->setInterval(30); connect(timer, SIGNAL(timeout()), this, SLOT(nextFrame())); timer->start(); } }}qtvideoread::~qtvideoread()
{}
void qtvideoread::paintEvent(QPaintEvent * e)
{ // 更新图像 QPainter painter(this); painter.drawImage(QPoint(0, 12), *image);}
void qtvideoread::nextFrame()
{// 更新数据 capture >> frame; if (!frame.empty()) { cv::cvtColor(frame, frame, CV_BGR2RGB); cv::flip(frame, frame, 1); this->update(); }}3、qtvideoread.h中代码为:
#ifndef QTVIDEOREAD_H
#define QTVIDEOREAD_H#include <QtWidgets/QMainWindow>
#include "ui_qtvideoread.h"#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>class qtvideoread : public QMainWindow
{ Q_OBJECT/*public: qtvideoread(QWidget *parent = 0); ~qtvideoread();private:
Ui::qtvideoreadClass ui; */public: qtvideoread(QWidget *parent = 0, Qt::WindowFlags flags = 0); ~qtvideoread();protected: void paintEvent(QPaintEvent * e);private:
Ui::qtvideoreadClass ui; cv::Mat frame; cv::VideoCapture capture; QImage *image; QTimer *timer;private slots:
void nextFrame();};
#endif // QTVIDEOREAD_H
4、点击运行就可以了
5、参考的网址:https://blog.csdn.net/yang_xian521/article/details/7042687