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();
}