1.在ui界面拖动pushbutton、label、scrollArea控件。
2.设置信号和槽。
在QtGuiApplication1.h文件中设置槽:
在QtGuiApplication1.cpp中添加槽函数。
回到ui界面,左键点击pushbutton并且下拉,设置信号和槽。
槽和信号间连接就建立了。
3 最最最重要的是!!!!!!!!!!!!!!!!!!!
需要在QtGuiApplication1.h文件中添加头文件
#include <QtWidgets/QMainWindow>
#include "ui_QtGuiApplication1.h"
#include <qpushbutton.h>
#include <opencv2/opencv.hpp>
#include <opencv2/video.hpp>
#include <opencv2/tracking.hpp>
#include <opencv2/tracking/tracker.hpp>
#include <qdebug.h>
#include <qlabel.h>
#include <qscrollarea.h>
特别是调用的控件头文件!!! 不然在QtGuiApplication1.cpp文件中读取不到控件名称!!!!!
4 附上打开摄像头和打开图片的代码;
打开图片代码使用label控件和scrollarea控件进行显示
打开图片槽函数:
void QtGuiApplication1::on_pushButton_2_clicked() {
QString filename;
filename = QFileDialog::getOpenFileName(this,
tr("选择图像"),
".",
tr("Images (*.png *.bmp *.jpg *.tif *.GIF )"));
if (filename.isEmpty())
{
return;
}
else
{
String str = filename.toStdString(); // 将filename转变为string类型;
Mat image = imread(str);
cvtColor(image, image, CV_BGR2RGB);
cv::resize(image, image, Size(300, 200));
QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows, QImage::Format_RGB888);
ui.label->setPixmap(QPixmap::fromImage(img));
ui.label->resize(QSize(img.width(), img.height()));
ui.scrollArea->setWidget(ui.label);
}
}
打开摄像头槽函数:
void QtGuiApplication1::on_pushButton_2_clicked(){
VideoCapture cap;
cap.open(0); //打开摄像头
if (!cap.isOpened())
return;
Mat frame;
while (1)
{
cap >> frame;
imshow("读取视频", frame); //显示当前帧
waitKey(30); //延时30ms
if (char(waitKey(40) == 'q'))
{
break;
}
}
cap.release();
return;
}
效果显示:
6 !!!!最重要的是要添加头文件
#include <qdebug.h>
#include <qlabel.h>
#include <qscrollarea.h>