//*************************************************************************************************************1
在Qt Creator上新建一个项目。
右键新项目>>添加库…>>外部库>>选中库文件路径>>下一步,完成,添加到.pro文件中。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427195546248.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70)
然后再在pro文件中手动输入下面代码:
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.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.h
#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
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427200020270.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70)
然后就可以运行,测试一下代码了。。。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427200126933.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70)
//**************************************************************************2
最近要用到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/
建议下载安装版的,这个可以自动加入系统环境变量。
![](https://img-blog.csdn.net/20161016130036041)
-
安装,选择第二个,为所有用户添加系统路径。之后Qt可以自动找到CMake。
![](https://img-blog.csdn.net/20161016130423765)
2. 安装Qt Creator
-
下载:https://www.qt.io/download-open-source/#section-2
选择离线安装包,在线安装太慢,经常会安装失败。
选择MinGW版本。VS 版本还需要安装对应的VS,单独安装Qt 是不可用的,而MinGW版本自身带有MinGW。
建议下载最新版本,因为里面带的MinGW版本较高,如果MinGW版本比opencv需要的版本低会编译失败。
![](https://img-blog.csdn.net/20161016132256383)
-
安装:安装路径不能有空格,我安装在默认路径,然后一路NEXT。
3. 下载opencv
下载opencv for Linux
http://opencv.org/downloads.html
opencv for windows 跟 opencv for Linux 的源码是一样的,只是
opencv for windows 里面多了以编译好的 opencv,这个我们不需要,只要下载源码就行了。
![](https://img-blog.csdn.net/20161016133417513)
如果编译失败,试试其他版本的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的路径。
![](https://img-blog.csdn.net/20161016135945448)
-
用 Qt 打开 opencv 项目
【Open Project】打开 opencv 的 CMakeLists.txt
![](https://img-blog.csdn.net/20161016140558332)
之后会出现一个 Configure Project 窗口,配置编译时产生的中间文件保存的路径,这些不用改,直接点击 Configure Project 按钮。中间文件会保存在跟 opencv 的文件夹在同一路径的一个文件夹,编译完删掉就好了。
-
进入【项目】,编译构造配置选择Release。
![](https://img-blog.csdn.net/20161016142436003)
然后等几分钟,这段时间 Qt 正在读取 CMakeLists.txt 文件,当在概要信息看到 Configuring done 和 Generating done 就读取完了。
![](https://img-blog.csdn.net/20161016142008751)
-
进入【项目】,找到 CMAKE_INSTALL_PREFIX,设置一个路径,这个路径是编译完成后输出的路径。其他配置保持默认。然后点击 Apply Configuration Changes。未保存的内容会是粗体字,已改变的配置将会是斜体字,再点一次 Apply Configuration Changes,Apply Configuration Changes 按钮将会变成灰色。
![](https://img-blog.csdn.net/20161016143211009)
-
再到构建步骤,详情,勾选install,然后点右下角的“锤子”,开始构建。构建过程要保持网络通畅,因为构建时会下载部分文件。这个过程会花半个小时左右,当“编译输出”中显示“正常退出”,表示构建成功,在 CMAKE_INSTALL_PREFIX 路径中可以看到产生的文件。如果编译失败,则换个opencv版本,重新尝试。
![](https://img-blog.csdn.net/20161016145255531)
配置opencv开发环境
编译好的opencv会有以下这些文件夹,把这些文件放到合适的位置。我就放在c盘opencv文件夹里了。
![](https://img-blog.csdn.net/20161016150505645)
-
配置opencv系统路径
对计算机右键->属性->高级系统配置->环境变量>Path 变量里加入 opencv 的 bin 文件夹的路径,用分号跟其他路径分隔。
![](https://img-blog.csdn.net/20161016151040009)
-
新建Qt项目
常用的项目类型的说明:
- Qt console Application:Qt的控制台项目,不创建Qt的图形界面,只会打开一个cmd窗口。
- 【Non-Qt Projectt】->plain C/C++ Application:创建的项目不带有Qt的库,最适合学习C/C++。创建后主程序就已存在一个
Hello World!
示例。
![](https://img-blog.csdn.net/20161016151913340)
-
给qt项目添加头文件路径和静态库路径
在.pro文件中添加以下代码。每次新建项目都要添加,好在复制粘贴很方便。
INCLUDEPATH += C:/opencv/include \
C:/opencv/include/opencv \
C:/opencv/include/opencv2
LIBS += C:/opencv/x86/mingw/lib/libopencv_*
![](https://img-blog.csdn.net/20170115113849641?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2NpZW4yMDEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
测试
新建一个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
两个路径之间用分号“;”分隔。
做完这一步可以在自己电脑直接双击打开编译好的软件 ,但是在别人电脑里依然是缺少文件。
![](https://img-blog.csdn.net/20161023213151626)
-
打包动态库
Qt 官方开发环境里自带了一个工具:windeployqt.exe。
win+r 然后输入 cmd 打开命令提示行,切换到编译完的软件目录下,假设软件名叫 abc.exe,在命令行里输入 windeployqt abc.exe,就会把需要的动态库都复制到该软件目录下
-
//**********************************************************************************4
-
在Qt Creator开发环境中配置OpenCV库的简明步骤
-
1、说明
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擅长的视觉算法有机结合起来,从而让我们快速的进行项目的构建和开发。
2、配置
网上也有不少相关方法,本文说的是简明步骤,因此只简要描述一下关键的步骤。
1、手头上要有OpenCV库,推荐的OpenCV库文件目录组织方式为:一个opencv主目录,一个include子目录(存放头文件),一个bin子目录(存放动态链接库.dll文件),一个lib文件(存放静态链接库.lib文件)。这样的组织方式更容易配置项目且便于移动和共享。(这里可下载最新的OpenCV库文件)
2、正确安装的Qt及Qt Creator开发环境。这里要注意Qt Creator构建套件部分的设置,下图为我的设置。尤其要正确设置编译器和调试器。
![](https://img-blog.csdn.net/20170327133002868?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFvYnVzaA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3、将OpenCV文件放置在某个磁盘位置,例如D盘根目录,如下图。将bin目录添加到系统的环境变量PATH中,添加完成后要重启系统。
![](https://img-blog.csdn.net/20170327133033541?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFvYnVzaA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4、在Qt Creator中新建工程项目,在项目配置文件.pro中填入如下红色框中的命令,然后点击菜单栏“构建”->“执行qmake”。
![](https://img-blog.csdn.net/20170327133120744?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFvYnVzaA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5、完成以上工作后,便可在工程中引入OpenCV头文件,并编写调用代码了。如下图所示。
![](https://img-blog.csdn.net/20170327133142899?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFvYnVzaA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)