Qt调用OpenCV打开图片
来源:互联网 发布:评论滚动效果php 编辑:程序博客网 时间:2024/05/09 08:30
本文由@星沉阁冰不语出品,转载请注明作者和出处。
文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/50688378
微博:http://weibo.com/xingchenbing
千辛万苦,最终还是在一位前辈的帮助下把环境给配置好了。对于Qt中OpenCV环境的配置,记录以下几点:
1.opencv一定要是自己用CMake编译的mingw版本!就因为老是编译不成功,导致费了一周也没配置好。换系统、换不同版本的opencv,重装Qt根本没用。
2.qt程序运行的时候要把opencv的相应*.dll文件拷贝到对应的Debug文件夹中去,即和*.pro、*.cpp等放在一起。
还有就是如果不懂不要一味的只是百度、Google,找个有经验的前辈指点一二有时可以省去几天的功夫。
配置好之后就开始编程吧。最简单的就是打开并显示一张图片了。
在文件夹中打开一张图片用到的是下面来这两行程序:
- QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image File(*.png *.jpg *.jpeg *.bmp)"));
- image = cv::imread(fileName.toLatin1().data());
显示图片时,如果用imshow当然简单,但是如果要用Qt界面来显示的话就得有一番计较了。
首先得把opencv的Mat格式图片转换成Qt的QImage格式。由于opencv的图片格式红绿蓝三通单的顺序是BGR,还要先把BGR转换成RGB。
显示的时候可以用QLabel也可以用Graphics View。两种方式显示图片的方式见最终程序。程序如下:
openImage.pro文件
- #-------------------------------------------------
- #
- # Project created by QtCreator 2016-02-17T18:59:03
- #
- #-------------------------------------------------
- QT += core gui
- greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
- TARGET = openImage
- TEMPLATE = app
- SOURCES += main.cpp\
- mainwindow.cpp
- HEADERS += mainwindow.h
- FORMS += mainwindow.ui
- INCLUDEPATH += C:/Users/bingbuyu/Desktop/opencv2.4.8/include \
- C:/Users/bingbuyu/Desktop/opencv2.4.8/include/opencv \
- C:/Users/bingbuyu/Desktop/opencv2.4.8/include/opencv2
- LIBS += -LC:/Users/bingbuyu/Desktop/opencv2.4.8/x64/mingw/lib -lopencv_core248.dll \
- -lopencv_highgui248.dll -lopencv_imgproc248.dll -lopencv_features2d248.dll \
- -lopencv_calib3d248.dll
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
- #include <QMainWindow>
- #include<opencv2/core/core.hpp>
- #include<opencv2/highgui/highgui.hpp>
- #include<opencv2/imgproc/imgproc.hpp>
- #include<QString>
- #include<QFileDialog>
- #include<QLabel>
- #include<QGraphicsScene>
- #include<QGraphicsView>
- using namespace cv;
- namespace Ui {
- class MainWindow;
- }
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
- public:
- explicit MainWindow(QWidget *parent = 0);
- ~MainWindow();
- private slots:
- void on_pushButton_clicked();
- void on_pushButton_2_clicked();
- private:
- Ui::MainWindow *ui;
- Mat image;
- };
- #endif // MAINWINDOW_H
- #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::on_pushButton_clicked()
- {
- QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image File(*.png *.jpg *.jpeg *.bmp)"));
- image = cv::imread(fileName.toLatin1().data());
- cv::cvtColor(image,image,CV_BGR2RGB);
- QImage img = QImage((const unsigned char*)(image.data),image.cols,image.rows,QImage::Format_RGB888);
- ui->label->setPixmap(QPixmap::fromImage(img));
- ui->label->resize(ui->label->pixmap()->size());
- ui->graphicsView->hide();
- //cv::namedWindow("Original Image");
- //cv::imshow("Original Image",image);
- }
- void MainWindow::on_pushButton_2_clicked()
- {
- QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image File(*.png *.jpg *.jpeg *.bmp)"));
- image = cv::imread(fileName.toLatin1().data());
- cv::cvtColor(image,image,CV_BGR2RGB);
- QImage img = QImage((const unsigned char*)(image.data),image.cols,image.rows,QImage::Format_RGB888);
- ui->graphicsView->resize(img.width(), img.height());
- QGraphicsScene *scene = new QGraphicsScene;
- //scene->setSceneRect(0,0,img.width(),img.height());
- scene->addPixmap(QPixmap::fromImage(img));
- ui->graphicsView->setScene(scene);
- ui->graphicsView->adjustSize();
- ui->label->hide();
- ui->graphicsView->show();
- }
main.cpp保持默认不变。
运行。程序异常终止。把用到的opencv的dll文件拷贝到Debug文件夹下,结果如下:
第二第三张分别为QLabel和Graphics View方式显示的图片。
最近开通了微信公众号,感兴趣的同学可以扫码在微信上交流。
阅读全文
0 0
- Qt调用OpenCV打开图片
- OpenCV实践之路——Qt中调用OpenCV打开图片
- 利用opencv+QT打开并显示图片
- opencv cmd方式调用程序打开图片
- Qt下调用opencv显示图片
- pcduino里,Qt无法打开摄像头(调用了opencv)
- opencv &qt study - (1) -打开一幅图片
- Ubuntu下qt+opencv小试牛刀1:打开图片
- opencv 打开gif图片
- opencv打开图片保存图片
- qt里打开图片
- OpenCV&Qt学习之一——打开图片文件并显示
- OpenCV&Qt学习之一——打开图片文件并显示
- OpenCV、EmguCV之打开图片
- Opencv打开图片接口说明
- 基于OPENCV的图片打开
- opencv结合MFC打开图片
- Qt点击按钮打开图片
- 举例预先装载&按需装载
- 双轴柱线图 折线取值出现空值时 折线图不显示
- Linux基础
- hdu 1248 寒冰王座 完全背包
- LVM逻辑卷存储器及命令
- Qt调用OpenCV打开图片
- Mac
- Android post网络数据请求(本人新手版本)
- fix协议封装挑战-数据库脚本
- 【PSOC4】+内部资源充分利用--ADC、UART、LCD、CapSense等
- ARP:地址解析协议
- 算法之二分查找(c语言版实现+测试)
- scikit-learn/ID3算法使用GridSearchCV调优
- git命令探索之路