首先是mat类,这个类的主要作用是构造一个容器,并将对应像素的灰度值放在容器内
#ifndef MAT_H#define MAT_H#include#include #include class mat{public: mat(){} mat(QImage &img):width(img.width()), height(img.height()),_img(img){} //构造函数,通过qt QImage类图片来完成mat类的初始化 void filldata(); //将QImage类图片内的数据转成灰度数据并附给mat类成员 QString print(); //将像素值转成Qstring对象,用于输出到label上private: int width; int height; QImage _img; std::vector data;};void mat::filldata(){ for(int i=0;i
上面的mat类简单的实现了将qt图片转成类似matlab数据的功能。后续计划重载各种运算符,让这个mat类能实现更多矩阵的运算。
这是qmainwindow,也就是主界面,用于交互
#include "mainwindow.h"#include "ui_mainwindow.h"#include "qstring.h"#include "qfiledialog.h"#include "qmessagebox.h"#include "mat.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this);}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_pushButton_clicked(){ QString filename; filename = QFileDialog::getOpenFileName(this,tr("choose image"),"",tr("")); if(filename.isEmpty()) { return; } else { QImage* img = new QImage; if(!(img->load(filename))) { QMessageBox::information(this,tr("open image failed"), tr("open image failed")); delete img; return; }''' ui->label->setScaledContents(true); //这句可以让图片自动适应label的尺寸''' ui->label->setPixmap(QPixmap::fromImage(*img)); mat matrix(*img); ui->label->setText(matrix.print()); }}
版权声明:本文为博主原创文章,未经博主允许不得转载。