Qt学习笔记——打开并显示图片
使用控件QLabel
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QFileDialog>
#include <QImage>
#include <QLabel>
#include <QTextCodec>
#include <QMessageBox>
#include <opencv2/opencv.hpp>
namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;cv::Mat image;private slots:void DisplayMat(cv::Mat image);void on_pushButton_clicked();
};#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::DisplayMat(cv::Mat image)
{cv::Mat rgb;QImage img;if(image.channels() == 3){cvtColor(image,rgb,CV_BGR2RGB);img = QImage((const unsigned char*)(rgb.data),rgb.cols,rgb.rows,rgb.cols*rgb.channels(),//rgb.cols*rgb.channels()可以替换为image.stepQImage::Format_RGB888);}else{img = QImage((const unsigned char*)(image.data),image.cols,image.rows,rgb.cols*image.channels(),QImage::Format_RGB888);}ui->labelimage->setPixmap(QPixmap::fromImage(img).scaled(ui->labelimage->size()));//setPixelmap(QPixmap::fromImage(img));ui->labelimage->resize(ui->labelimage->pixmap()->size());//resize(ui->label->pixmap()->size());
}void MainWindow::on_pushButton_clicked()
{QString filename = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image File (*.jpg *.png *.bmp)"));QTextCodec *code = QTextCodec::codecForName("gb18030");std::string name = code->fromUnicode(filename).data();//filename.toAscii().data()image = cv::imread(name);if(!image.data){QMessageBox msgBox;msgBox.setText(tr("Image Data Is Null"));msgBox.exec();}else {DisplayMat(image);}
}
main.cpp
#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
显示结果如下:
注意事项:
这个过程中要注意几点:
第一:建立Qt QWidgets Application工程
第二:在ui界面上添加一个QLabel控件,并改名字为labelimage
在ui界面上添加一个Button按钮,点击右键,转到槽,选择第一个 clicked(),确定,就会生成一个按钮的响应函数即:
on_pushButton_clicked()
第三:配置工程遇到的相关问题,比如, QT += core gui widgets
添加LIBS
添加INCLUDEPATH
等等
————————————————————————————————————————————————————————————————————————
当然,不用OpenCV更方便可以显示出来
如下
在mainwindow.cpp中
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);QImage myImage;myImage.load("lena.jpg");ui->labelimage->setPixmap(QPixmap::fromImage(myImage).scaled(ui->labelimage->size()));
}MainWindow::~MainWindow()
{delete ui;
}
且在ui界面中添加QLabel控件,并拖动设置其大小即可,mainwindow.h中添加#include<QImage>。其他不要变化!
显示结果如下。
Qt学习笔记——打开并显示图片相关推荐
- 利用opencv+QT打开并显示图片
``` // 利用opencv+QT打开并显示图片// 头文件在添加 #include "qlabel.h" // opencv #include <opencv2\core ...
- QT学习笔记(五):Qt5的8种标准对话框示例
QT学习笔记(五):Qt5的8种标准对话框示例 前言 实例展示 1.颜色对话框 2.文件对话框 3.字体对话框 4.输入对话框 5.消息对框 6.进度对话框 7.错误信息对话框 8.向导对话框. 前言 ...
- QT学习笔记(摘抄)
QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...
- 【QT学习笔记】基于QT的天气预报
[QT学习笔记]基于QT的天气预报 前言 那就开始吧! 先看一下效果 颜面最重要,画个UI 构造实现 怎么开始? 开始解析数据 关于城市切换 ok 最后源码献上 感谢 前言 学习qt已经有一段时间了, ...
- QT 学习笔记(六)
文章目录 一.设计器的使用 二.常用控件 1. Containers 容器类 2. Input Widgets 输出控件 3. Display Widgets 显示类控件 三.代码和运行结果 1. 主 ...
- QT学习笔记(十三):绘制图像
QT学习笔记(十三):绘制图像 paintEvent() 事件源码添加: #include <QPainter> #include <QImage> #include < ...
- QT学习笔记(六):Qt5主窗口框架示例
QT学习笔记(五):Qt5主窗口框架代码示例 一.添加编辑菜单:并在下拉菜单和工具栏中添加"打开文件"动作菜单 #include <QToolButton> #incl ...
- Qt学习笔记之MySQL数据库
一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...
- Qt学习笔记之数据库
一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...
最新文章
- AI就是“大数据+机器学习”?答案是否定的
- linux 格式化 dvd,linux 服务器分区格式化相关知识 -mount
- 微软2011 Build大会:Windows 8盛大出场(转)
- vb6中word编程总结
- java多线程编程--基础篇
- 提交git push 的时候报错,Please make sure you have the correct access rights
- JavaScript结合Bootstrap仿微信后台多图文界面管理
- maven中的groupId和artifactId到底指的是什么?
- 参考TinyOS官方网站实现BlinkToRadio
- Delphi应用程序的调试(三)监视变量
- CCF201809-4 再卖菜(100分)【DFS】
- c语言分号应用,问什么C程序里总是提示缺少分号;,而明明有分号?
- Image Pyramids
- java导出出行客人到Excel
- 数字图像处理Python语言实现-图像增强-导向滤波(Guided Filter)
- 【转】常用邮箱的 IMAP/POP3/SMTP 设置
- Excel 序号自动增长,变更
- 【MODIS数据处理#13】使用Arcpy一键加工长时间序列MODIS数据
- [buuctf]ciscn_2019_ne_5
- java调用百度内容审核接口检查文本
热门文章
- 问答项目---登陆验证码点击切换及异步验证验证码
- DB2 V10.5 PureScale支持HADR
- Access数据库基于时间盲注的实现[www.freebuf.com]
- FTP+SSL(加密的ftp)
- 中位数(Median)
- 【EOS】2.3 深入理解ABI文件
- 由通项为In(1+1\n)的级数引申...
- vscode + SFTP 传输文件到服务器,从服务器下载文件
- 一款网盘软件应该具备哪些功能?
- loj10135. 「一本通 4.4 练习 2」祖孙询问