利用QT GUI写OpenCV程序入门
来源:互联网 发布:学编程的优势 编辑:程序博客网 时间:2024/04/30 15:50
1、首先创建QT Gui程序项目(不细说了)
2、修改pro配置文件,增加OpenCV支持
3、利用QT Creater 创建一个如下布局,其中图片显示为一个label控件
4、QT中中文乱码解决方法
网上有不少关于qt中文乱码解决的方法,我找到了一个比较好的办法,main函数添加如下函数即可:
#include <QtGui/QApplication>#include "mainwindow.h"#include <QTextCodec>int main(int argc, char *argv[]){ //处理中文乱码 QTextCodec::setCodecForTr(QTextCodec::codecForName("system")); QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}5、如图,可以看到程序实现了显示一张图片,翻转一张图片的功能
#include "mainwindow.h"#include "ui_mainwindow.h"#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/opencv.hpp>#include <QFileDialog>#include <QLineEdit>#include <QString>#include <QMessageBox>#include <QRadioButton>#include <QImage>#include <QLabel>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this);}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_open_clicked(){ //打开一个图片文件,并将文件目录写入到输入框中 QString strFileName = QFileDialog::getOpenFileName(this,tr("打开图片"),".",tr("图片文件 (*.png *.jpg *.jpeg *.bmp)")); QLineEdit *pLineEdit = (QLineEdit *)ui->dirEdit; pLineEdit->setText(strFileName);}void MainWindow::on_imgShow_clicked(){ //首先提取文件目录,如果为空则弹出警告对话框 QLineEdit *pLineEdit = (QLineEdit *)ui->dirEdit; QString strFileName = pLineEdit->text(); if(strFileName.isEmpty()) { QMessageBox::about(this,tr("警告"),tr("请先选择文件")); return; } //读取该图片文件 cv::Mat image = cv::imread(strFileName.toAscii().data()); if(!image.data) { QMessageBox::about(this,tr("警告"),tr("图片打开错误")); return; } //转换图片的格式,在QT下利用OpenCV读取的图片数据如果要生成一张QImage类型图片需要转换格式 cv::cvtColor(image,image,CV_RGB2BGR); //除了在label显示图片,同时利用OpenCV自身的gui弹出一图片窗口,可以看到如果不转换OpenCV GUI显示正常 cv::namedWindow("图片"); cv::imshow("图片", image); QImage img= QImage((const unsigned char*)(image.data), image.cols,image.rows,QImage::Format_RGB888); // img = img.scaled(ui->QImgShow->size()); // 根据Label设置图片大小,并显示 ui->QImgShow->setPixmap(QPixmap::fromImage(img).scaled(ui->QImgShow->size())); // resize the label to fit the image // ui->QImgShow->resize(ui->QImgShow->pixmap().size());}void MainWindow::on_filpImg_clicked(){ QLineEdit *pLineEdit = (QLineEdit *)ui->dirEdit; QString strFileName = pLineEdit->text(); if(strFileName.isEmpty()) { QMessageBox::about(this,tr("警告"),tr("请先选择文件")); return; } cv::Mat image = cv::imread(strFileName.toAscii().data()); if(!image.data) { QMessageBox::about(this,tr("警告"),tr("图片打开错误")); return; } cv::Mat result; //根据单选按钮翻转图片 int iflipType; if(ui->radioH->isChecked()) { iflipType = 1; }else if(ui->radioV->isChecked()){ iflipType = 0; }else{ iflipType = -1; } //翻转图片,弹出OpenCV 的gui 显示图片 cv::flip(image,result,iflipType); cv::namedWindow("图片"); cv::imshow("图片", result);}
项目代码下载
- 利用QT GUI写OpenCV程序入门
- Qt调用OpenCV库编写GUI程序
- 在Qt调用OpenCV库编写GUI程序
- 利用MFC和OpenCV构建GUI程序读取摄像头视频
- 用QT写个简单的GUI程序
- C++ GUI Qt4.QT入门
- qt 利用QSortFilterProxyModel写一个address book程序
- OpenCV Qt下入门
- 用 Java 写GUI 程序
- qt+opencv程序发布
- VS2015+Qt+Opencv程序
- qt-00-写gui的感触
- qt GUI程序 改为控制台程序
- Qt 写控制台程序
- Qt学习之四:使用Qt+OpenCV创建GUI应用
- 《C++ GUI Qt4编程》第一章、Qt入门
- C++ GUI Qt4编程-Qt入门
- 一个简单的 Qt GUI 程序
- Nginx配置文件详细说明
- RIL 架构
- 为打开新Activity动作添加动画效果
- 继承关键字 :extends
- [转]使用 Apache MINA 2 框架开发网络应用
- 利用QT GUI写OpenCV程序入门
- android调试是出现:Re-installation failed due to different application signatures
- 你或许尚未了解PHP的那10件事情
- java动态代理(JDK和cglib)
- 分布式数据流分析框架
- 关于自定义控件
- 定义Window进入和退出效果(及Window,Activity,View的理解)
- Galaxy S II/ i9100 Root图文教程
- [转]使用 Apache MINA2 实现 Web 系统的消息中间件