当前位置: 代码迷 >> 综合 >> QT+VS2017+OPENCV信号和槽-------按键显示图片(实测)
  详细解决方案

QT+VS2017+OPENCV信号和槽-------按键显示图片(实测)

热度:36   发布时间:2023-12-02 02:06:01.0

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>

 

 

 

  相关解决方案