天天看点

vs2015 + opencv3.4.0 + qt msvc2015_64-5.7.1 视屏显示

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, 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

转载于:https://www.cnblogs.com/rjjhyj/p/9682247.html