Qt_OpenCV基础篇 - 001】Qt中使用OpenCV处理并显示图片程序框架(QMainWindow)

1、设计界面如下
在这里插入图片描述
3、编写代码,其中mainwindow.h和mainwindow.cpp文件内容分别如下:

1)mainwindow.h头文件内容:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include<opencv2/opencv.hpp>

using namespace cv;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_Button_openLable_clicked();

    void on_Button_openGrView_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

2)mainwindow.cpp文件内容:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QMainWindow>
#include<QFileDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_Button_openLable_clicked()
{
    QString fileName=QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image File(*.png *.jpg *.jpeg *.bmp)"));
    if(fileName.isEmpty())
    {
        return;
    }

    ui->stackedWidget->setCurrentIndex(0);
    Mat srcImage=imread(fileName.toLatin1().data());//读取图片数据
    cvtColor(srcImage,srcImage,COLOR_BGR2RGB);//图像格式转换
    QImage dispalyImage=QImage((const unsigned char*)(srcImage.data),srcImage.cols,srcImage.rows,QImage::Format_RGB888);
    ui->label->setPixmap(QPixmap::fromImage(dispalyImage.scaled(ui->label->size(), Qt::KeepAspectRatio)));//显示图像

}

void MainWindow::on_Button_openGrView_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image File(*.png *.jpg *.jpeg *.bmp)"));
    if (fileName.isEmpty())
    {
        return;
    }
    ui->stackedWidget->setCurrentIndex(1);
    Mat srcImage = imread(fileName.toLatin1().data());//读取图片数据
    cvtColor(srcImage, srcImage, COLOR_BGR2RGB);//图像格式转换
    QImage disImage = QImage((const unsigned char*)(srcImage.data),srcImage.cols,srcImage.rows,QImage::Format_RGB888);
    QGraphicsScene *scene = new QGraphicsScene;//图像显示
    scene->addPixmap(QPixmap::fromImage(disImage));
    ui->graphicsView->setScene(scene);
    ui->graphicsView->show();

}
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐