//*************************************************************************************************************1html
在Qt Creator上新建一个项目。
右键新项目>>添加库…>>外部库>>选中库文件路径>>下一步,完成,添加到.pro文件中。
算法
而后再在pro文件中手动输入下面代码:
windows
INCLUDEPATH += D:\opencv\build\include\ D:\opencv\build\include\opencv\ D:\opencv\build\include\opencv2\
固然每一个人OpenCV的安装路径是不同的,你要找到你的安装路径下。
而后举个例子吧。
.pro文件:
网络
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets INCLUDEPATH += D:\opencv\build\include\ D:\opencv\build\include\opencv\ D:\opencv\build\include\opencv2\ win32:CONFIG(release, debug|release): LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342 else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342d else:unix: LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342 INCLUDEPATH += D:/opencv/build/x64/vc14 DEPENDPATH += D:/opencv/build/x64/vc14 SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui
main.cppeclipse
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
mainwindow.hide
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QFileDialog>//文件对话框 #include <opencv2/core/core.hpp>//opencv相关的库文件 #include <opencv2/highgui/highgui.hpp> using namespace cv; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0);//explicit是显式的意思,构造函数,继承父类 ~MainWindow();//析构函数 private slots://私有槽函数 void on_pushButton_clicked();//声明按键 void on_pushButton_2_clicked(); private: Ui::MainWindow *ui; Mat image; }; #endif // MAINWINDOW_H
mainwindow.cpp函数
#include "mainwindow.h"//头文件 #include "ui_mainwindow.h"//ui界面头文件 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->pushButton_2->setEnabled(false);//初始按键2不能使用 } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked()//按键定义 { //调用窗口打开文件 QString filename = QFileDialog::getOpenFileName(this, tr("open image"), ".", tr("Image file(*.png *.jpg *.bmp)")); image = imread(filename.toLocal8Bit().data()); if(image.data) { ui->pushButton_2->setEnabled(true);//按键2恢复 } //将Mat图像转换为QImage图像,才能显示在label上 QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows, QImage::Format_RGB888);//格式转换 //设定图像大小自适应label窗口的大小 img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); ui->label->setPixmap(QPixmap::fromImage(img)); } void MainWindow::on_pushButton_2_clicked() { flip(image, image, 1); QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows, QImage::Format_RGB888); img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); ui->label->clear();//清除窗口 ui->label->setPixmap(QPixmap::fromImage(img));//显示其它图像 }
mainwindow.ui
工具
而后就能够运行,测试一下代码了。。。
学习
//**************************************************************************2测试
QT creator中使用opencv
最近要用到opencv作图像方面的东西,网上不少是用VS加opencv,但本身对VS不怎么喜欢,想用QT Creator。在网上搜索了不少资料,终于花了一天的时间,在QT Creator上能使用opencv了。
须要的软件:(1)QT Creator。个人版本是4.8.5。这个版本仍是在学习亚飞的QT Creator的时候安装的,网上有说QT版本低,而opencv版本高的话,可能在执行mingw32-make命令会报错。所以为了以防万一,我下载的低版本的opencv
(2)opencv。个人版本是2.3.0
(3)cmake 下载地址http://www.cmake.org/cmake/resources/software.html
另外个人计算机的操做系统是xp,32位的。
首先将QT creator, cmake安装好,这个蛮简单的。而安装opencv,设置解压路径就能够了。安装CMake要注意:(1)安装路径不能有中文和空格(2)勾选加入全部境变量中。
将C:\Qt\mingw\bin加入系统变量。
CMake OpenCV,使用CMake(http://www.cmake.org/)生成OpenCV库的makefile文件,须要注意的是解压出来的OpenCV存储路径中的文件夹不要带有空格或者中文(个人是E:\OpenCV,不要用相似于E:\工程\opencv, E:\Open CV这种),打开CMake,指定源码位置(就是OpenCV解压出来的地方)和存放生成文件的地方,Configure弹出如图对话框,选择MinGW Makefiles和Specify native compilers
跳出对话框用以指定C++和C的编译器路径,C用gcc.exe,在QtSDK目录下的mingw/bin子目录中,C++用g++.exe:
而后再次Configure,无错误后选中WITH_QT
再次Configure会出现下图信息提示找不到Qt的Qmake可执行文件
手动指定Qmake.exe所在目录
(注意这张图是我在网上复制的别人的)
再次Configure,无错误后 Generate。
1> Cmd命令 转到Generate到的目录(个人是F:\OpenCV)
cd F:\OpenCV
2> Cmd命令 编译文件
>> mingw32-make
3> Cmd命令 编译INSTALL
>> mingw32-make install
下面开始配置Qt Creator的OpenCV开发环境,拷贝下面三个文件夹放在同一个文件夹下(只需这三个目录,其他生成的文件和文件夹能够删除,以节省磁盘空间)
(1)OpenCV-2.3.0安装目录下的build/include目录
(2)CMake目标路径下,MinGW编译后的bin目录
(3)CMake目标路径下,MinGW编译后的lib目录
拷贝三个目录到同一目录后的结构以下图(我删除了原来的CMake目标目录中的其余目录,拷贝进来了include目录)
将bin目录添加到系统环境变量
至此Qt Creator下的OpenCV开发环境已经配置好,下面在Qt Creator下测试是否已经配置成功
打开Qt Creator,新建一个空工程,而后添加一个cpp文件,任意命名
在pro文件中添加以下OpenCV的依赖文件
INCLUDEPATH+=C:\OpenCV\include\opencv\
C:\OpenCV\include\opencv2\
C:\OpenCV\include
LIBS+=C:\OpenCV\lib\libopencv_calib3d230.dll.a\
C:\OpenCV\lib\libopencv_contrib230.dll.a\
C:\OpenCV\lib\libopencv_core230.dll.a\
C:\OpenCV\lib\libopencv_features2d230.dll.a\
C:\OpenCV\lib\libopencv_flann230.dll.a\
C:\OpenCV\lib\libopencv_gpu230.dll.a\
C:\OpenCV\lib\libopencv_highgui230.dll.a\
C:\OpenCV\lib\libopencv_imgproc230.dll.a\
C:\OpenCV\lib\libopencv_legacy230.dll.a\
C:\OpenCV\lib\libopencv_ml230.dll.a\
C:\OpenCV\lib\libopencv_objdetect230.dll.a\
C:\OpenCV\lib\libopencv_video230.dll.a
这样之后,就能够在主函数中正常编写本身的程序了。
//**********************************************************************************3
用Qt Creator编译opencv并配置开发环境
前言
opencv是一个跨平台计算机视觉库,使用前须要把它编译成二进制的静态库和动态库,以后在代码中直接链接到二进制库。
网上不少教程都是用CMake配合MinGW编译opencv,其中须要用到命令行操做,其实有更简单的方法,Qt Creator支持CMake,能够直接用Qt Creator在图形界面中编译好opencv。
对于各个C++ IDE的见解
我试过vs2015,eclipse,code blocks,Qt Creator,各有优缺点。
-
vs2015
opencv for windows中有已经编译好的文件能够直接调用,不须要再手动编译opencv。可是vs太过庞大,功能复杂,打开界面十分缓慢,用起来有点麻烦,不适合初学者。而且vs只能在windows上用,我更喜欢多平台通用的IDE。 -
eclipse
打开界面的速度比vs还要慢,果断放弃。 -
code blocks
功能强大,界面不太漂亮,比vs还要复杂的界面让新手无所适从。 -
Qt Creator
Qt Creator的界面很简洁美观,启动速度很快,而且适合之后用Qt开发图形交互界面,支持windows、Linux、Mac多个平台,内联CMake,十分适合新手做为开发环境。
准备
- 安装CMake
- 安装Qt Creator
- 下载opencv
1. 安装CMake
编译opencv须要用到CMake这个工具。
-
下载:https://CMake.org/download/
建议下载安装版的,这个能够自动加入系统环境变量。 -
安装,选择第二个,为全部用户添加系统路径。以后Qt能够自动找到CMake。
2. 安装Qt Creator
-
下载:https://www.qt.io/download-open-source/#section-2
选择离线安装包,在线安装太慢,常常会安装失败。选择MinGW版本。VS 版本还须要安装对应的VS,单独安装Qt 是不可用的,而MinGW版本自身带有MinGW。
建议下载最新版本,由于里面带的MinGW版本较高,若是MinGW版本比opencv须要的版本低会编译失败。
-
安装:安装路径不能有空格,我安装在默认路径,而后一路NEXT。
3. 下载opencv
下载opencv for Linux
http://opencv.org/downloads.html
opencv for windows 跟 opencv for Linux 的源码是同样的,只是
opencv for windows 里面多了以编译好的 opencv,这个咱们不须要,只要下载源码就好了。
若是编译失败,试试其余版本的opencv。
我在Ubuntu上编译3.1版失败,编译2.4.13和3.0.成功,在windows上编译3.1成功,3.0却失败,试了很多于10次,以后才意识到跟MinGW版本有关,MinGW版本要跟opencv版本对应才能编译成功。
编译opencv
-
确认Qt成功找到 CMake
打开 Qt Creator,工具->选项->构建和运行->CMake,若是以前 CMake 配置好了系统路径,这里应该会自动加载到系统路径,不然手动指定CMake的路径。 -
用 Qt 打开 opencv 项目
【Open Project】打开 opencv 的 CMakeLists.txt以后会出现一个 Configure Project 窗口,配置编译时产生的中间文件保存的路径,这些不用改,直接点击 Configure Project 按钮。中间文件会保存在跟 opencv 的文件夹在同一路径的一个文件夹,编译完删掉就行了。
-
进入【项目】,编译构造配置选择Release。
而后等几分钟,这段时间 Qt 正在读取 CMakeLists.txt 文件,当在概要信息看到 Configuring done 和 Generating done 就读取完了。
-
进入【项目】,找到 CMAKE_INSTALL_PREFIX,设置一个路径,这个路径是编译完成后输出的路径。其余配置保持默认。而后点击 Apply Configuration Changes。未保存的内容会是粗体字,已改变的配置将会是斜体字,再点一次 Apply Configuration Changes,Apply Configuration Changes 按钮将会变成灰色。
-
再到构建步骤,详情,勾选install,而后点右下角的“锤子”,开始构建。构建过程要保持网络通畅,由于构建时会下载部分文件。这个过程会花半个小时左右,当“编译输出”中显示“正常退出”,表示构建成功,在 CMAKE_INSTALL_PREFIX 路径中能够看到产生的文件。若是编译失败,则换个opencv版本,从新尝试。
配置opencv开发环境
编译好的opencv会有如下这些文件夹,把这些文件放到合适的位置。我就放在c盘opencv文件夹里了。
-
配置opencv系统路径
对计算机右键->属性->高级系统配置->环境变量>Path 变量里加入 opencv 的 bin 文件夹的路径,用分号跟其余路径分隔。 -
新建Qt项目
经常使用的项目类型的说明:
- Qt console Application:Qt的控制台项目,不建立Qt的图形界面,只会打开一个cmd窗口。
- 【Non-Qt Projectt】->plain C/C++ Application:建立的项目不带有Qt的库,最适合学习C/C++。建立后主程序就已存在一个
Hello World!
示例。
-
给qt项目添加头文件路径和静态库路径
在.pro文件中添加如下代码。每次新建项目都要添加,好在复制粘贴很方便。
INCLUDEPATH += C:/opencv/include \ C:/opencv/include/opencv \ C:/opencv/include/opencv2 LIBS += C:/opencv/x86/mingw/lib/libopencv_*
测试
新建一个plain C/C++ Application,写入如下代码,cvLoadImage( )函数里填入一张照片的路径,若是能编译成功并显示照片就配置成功了。
注意文件的路径是正斜杠,不是windows路径的反斜杠,若是用反斜杠得这样写:"D:\\Pictures\\RoboMasters.jpg"
#include "opencv/highgui.h" int main(int argc, char *argv[]) { IplImage* img = cvLoadImage("D:/Pictures/RoboMasters.jpg"); if (img == NULL) return 1; cvNamedWindow("abc",CV_WINDOW_AUTOSIZE); cvShowImage("abc",img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyAllWindows(); return 0; }
关于Qt的动态库
在Qt中用Ctrl+R能够成功运行程序,可是直接双击程序运行却会提示缺乏libgcc_s_dw2-1.dll
,这是由于缺乏Qt的动态库。
解决方法是发布软件时把动态库添加到工程目录里。方法以下:
-
添加系统环境路径
C:\Qt\Qt5.7.0\5.7\mingw530_32\bin
C:\Qt\Qt5.7.0\Tools\mingw530_32\bin
两个路径之间用分号“;”分隔。作完这一步能够在本身电脑直接双击打开编译好的软件 ,可是在别人电脑里依然是缺乏文件。
-
打包动态库
Qt 官方开发环境里自带了一个工具:windeployqt.exe。
win+r 而后输入 cmd 打开命令提示行,切换到编译完的软件目录下,假设软件名叫 abc.exe,在命令行里输入 windeployqt abc.exe,就会把须要的动态库都复制到该软件目录下 -
//**********************************************************************************4
-
在Qt Creator开发环境中配置OpenCV库的简明步骤
-
一、说明
OpenCV库是一套全面而简洁的计算机视觉算法库,OpenCV主要由一些C及C++函数和类构成。在Windows平台上开发视觉算法时,Visual Studio IDE无疑是一款强大的工具软件,可是,若是要给咱们的OpenCV视觉算法加上漂亮的用户界面,即GUI,将会变得有些麻烦。在Visual Studio中,能够将OpenCV与MFC相结合开发界面,然而,MFC太庞大,且涉及到多线性(Multi-Thread)、先进图形图像显示、跨平台等需求时,使用MFC开发OpenCV算法界面会变得让人抓狂(姑且这么说吧)。另外一种技术,就是在Visual Studio中,咱们在视觉解决方案中能够创建C#工程,经过C#构建界面,这里,Visual Studio自带强大的Blend界面设计工具,那么问题又来了:C#和C++语言体系不一样,C#为解释型语言,C++为编译型语言,OpenCV自己为C++代码,两者在代码和数据交互上存在太多麻烦的转换,转换的过程浪费开发时间。
所以,涉及到本文的主要目的,即:在Qt中引入OpenCV库,将Qt擅长的界面和OpenCV擅长的视觉算法有机结合起来,从而让咱们快速的进行项目的构建和开发。
二、配置
网上也有很多相关方法,本文说的是简明步骤,所以只简要描述一下关键的步骤。
一、手头上要有OpenCV库,推荐的OpenCV库文件目录组织方式为:一个opencv主目录,一个include子目录(存放头文件),一个bin子目录(存放动态连接库.dll文件),一个lib文件(存放静态连接库.lib文件)。这样的组织方式更容易配置项目且便于移动和共享。(这里可下载最新的OpenCV库文件)
二、正确安装的Qt及Qt Creator开发环境。这里要注意Qt Creator构建套件部分的设置,下图为个人设置。尤为要正确设置编译器和调试器。
三、将OpenCV文件放置在某个磁盘位置,例如D盘根目录,以下图。将bin目录添加到系统的环境变量PATH中,添加完成后要重启系统。
四、在Qt Creator中新建工程项目,在项目配置文件.pro中填入以下红色框中的命令,而后点击菜单栏“构建”->“执行qmake”。
五、完成以上工做后,即可在工程中引入OpenCV头文件,并编写调用代码了。以下图所示。