1. 程式人生 > >VS2015+QT5簡單例子(二)——讀取視訊

VS2015+QT5簡單例子(二)——讀取視訊

1.新建一個QT專案QT_VS_Capture.sln(Qt Application)

2.設定標頭檔案路徑

專案-屬性-VC++目錄

(1)設定包含目錄QT5.6\5.6\msvc2015_64\include

(2)設定庫目錄QT5.6\5.6\msvc2015_64\lib

3.點選qt_vs_capture.ui


4.新增一個label控制元件,如下圖


label控制元件屬性設定如下


6.返回VS2015,在qt_vs_capture.h的QT_VS_Capture類中宣告成員變數和槽函式如下:

#ifndef QT_VS_CAPTURE_H
#define QT_VS_CAPTURE_H

#include <QtWidgets/QMainWindow>
#include "GeneratedFiles\ui_qt_vs_capture.h"
#include<QtCore\qtimer.h>
#include<QtGui\qpixmap.h>
#include<opencv2/opencv.hpp>
using namespace cv;
class QT_VS_Capture : public QMainWindow
{
Q_OBJECT

public:
QT_VS_Capture(QWidget *parent = 0);
~QT_VS_Capture();

private:
Ui::QT_VS_CaptureClass ui;
QTimer *time_clock;
QImage img;



private slots:
void readcamera();
};
#endif // QT_VS_CAPTURE_H

7.在qt_vs_capture.cpp中定義如下:

#include "qt_vs_capture.h"
VideoCapture capture(0);

QT_VS_Capture::QT_VS_Capture(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
time_clock = new QTimer();
time_clock->setInterval(10);
time_clock->start();
connect(time_clock, SIGNAL(timeout()), this, SLOT(readcamera()));


}

QT_VS_Capture::~QT_VS_Capture()
{

}

void QT_VS_Capture::readcamera()
{
Mat frame;
capture >> frame;
cvtColor(frame, frame, CV_BGR2RGB);
img = QImage((const unsigned char*)frame.data, frame.cols, frame.rows, QImage::Format_RGB888);
ui.label->setPixmap(QPixmap::fromImage(img));
ui.label->resize(ui.label->pixmap()->size());
ui.label->show();
}

8.執行如下