Windows系统 为 QT5软件 搭建 OpenCV2 开发环境

我们的电脑系统:Windows 10 64位

Qt5 软件:Qt 5. 7. 0

OpenCV2 版本:OpenCV2.4.10

1. 安装 Qt 5 软件

请见博客:Windows系统 安装 Qt 5.7.0

注意: 请你务必要看这个Qt软件的安装教学。如果你没有像教学里面一样添加环境变量的话,请你添加Qt软件的环境变量。

2. 安装 CMake 软件

请见博客:Windows系统 安装 CMake

3. 下载 OpenCV 源代码

OpenCV官网下载:

4. 编译 OpenCV2.4.10

Step 1 . 打开 CMake 软件。

点击Browse Source… 按钮,选择 OpenCV源代码 所在目录:xxx/opencv/sources

Step 2 .

1. 我们在 xxx/opencv/ 路径里面, 新建一个名字为 opencv-qt5-build的文件夹。这个文件夹是用来存放 编译OpenCV后生成的文件 的文件夹。

2. 点击 Browse Build…(源码路径) 按钮,选择 xxx/opencv/opencv-qt5-build 路径

完成上面的 Step 1Step 2后,现在是这个样子的:

Step 3 .

  1. 现在点击:Configure (生成路径)按钮

  1. 再新弹出的窗口里面选择:MinGW Makefiles。如下图所示:

Step 4 . Configure结束后,会出现粉红色背景的各种选项。拖动滑块到页面下部位置。勾选:WITH_OPENGLWITH_QT 这两个复选框:

Step 5 . 再次点击Configure按钮。这次粉红色背景的各种选项,是刚刚检测到的Qt5相关的:

注意:如果你在安装Qt5软件的步骤中,没有给Qt5添加环境变量的话,那么在这一步,CMake软件是不会找到这次Qt5相关的项的。

如果你在这一步时,遇到问题。请参考这个网站:http://blog.csdn.net/zhaocj/article/details/38944037,或许可以解决你的问题。

Step 6 . 再次点击Configure按钮,知道粉红色消失

Step 7 . 点击 Generate 按钮,生成 makefile 文件.成功后,底下会提示 :Generating done。如下图所示:(这里,我需要了很多的警告:CMake Warning (dev),没有关系,不用管它。)

Step 8 . 打开 cmd,进入刚才设置的目标路径(D:\software_install_package_win\OpenCV2\opencv\opencv_qt5_build)

cd D:
D:
cd D:\software_install_package_win\OpenCV2\opencv\opencv_qt5_build

输入操作命令,如下图所示:

Step 9 . 输入 mingw32-make 命令开始编译(编译前,关闭所有杀毒软件)。如下图所示:

这是一个漫长的过程,大约需要 20分钟 ~ 60分钟。

在这漫长的编译时间里,我先简单介绍一下:OpenCV就是一个比较大的程序工程。我们使用CMake软件是为了生成OpenCV这个程序工程适合于我们电脑系统及开发软件的一个用于编译程序的MakeFile文件。 “使用 mingw32-make 命令编译OpenCV”:就是使用这个刚刚生成的MakeFile文件来编译OpenCV源代码。当编译完成之后,我们使用mingw32-make install命令,来自动安装:从OpenCV 源代码中编译生成的可执行文件。(对于Windows系统来说,其实这一步我们可以不做。因为它并没有安装在系统磁盘里面,只是存放在xxx\opencv\opencv_qt5_build路径里的install文件夹里,并且这个文件夹里的内容,我们又不用。)

大家都知道,要想让源代码生成可执行文件,必须要经历两个步骤:

1. 编译 :将源代码编译成多个链接文件

2. 链接 :将多个链接文件链接起来,生成一个可执行文件。

对于OpenCV,它是一个库,我们需要的是:它编译出来的链接文件,就可以了。当我们自己写程序的时候,如果程序里面使用到某些OpenCV相关的函数时,那么在编译和链接我们自己程序的时候。在编译过程中,就只是编译我们自己的程序源代码;而在链接过程中,是将我们的程序生成的链接文件和使用到的OpenCV的某些链接文件链接到一起,最终生成一个可执行文件。

大家现在也都轻身经历了,编译OpenCV源代码(生成链接文件)是需要花费很长的时间的。你可以想象一下:如果我们自己写的程序每次编译都要编译OpenCV源代码的话,那是一件多么坑爹的事情。如果我们先把OpenCV的源代码单独编译,生成链接文件。这样在我们自己的程序里面,如果使用到了OpenCV库的函数,我们只要让我们的程序知道OpenCV的链接文件的所在路径,我们就可以在编译程序的时候,只编译我们自己的程序,而在链接的时候,选择性的链接OpenCV的链接文件,这样生成可执行文件的速度就快得多了。

这就是为什么我们现在要花这么长的时间,在这里编译OpenCV源代码的原因。不知道我有没有说清楚。

好了,现在已经编译完成了。

Step 10 . 执行 mingw32-make install,大约 30秒 ~ 90秒 的时间。

5. 将编译生成的有用的OpenCV相关文件,整理出来

来到xxx/opencv/opencv_qt5_build/install路径里面:

我们需要这个路径里面的x64/mingw/binx64/mingw/lib 以及 install 这三个文件夹。(这三个文件夹是有用的,其他的都是没有用的文件)

Step 1 . 新建一个文件夹opencv2410-qt5,(文件夹名不能有中文,不能有空格和其他特殊符号):路径为:C:\third_packages\opencv\opencv2410-qt5

Step 2 . 拷贝这三个有用的文件夹,放在这个opencv2410-qt5文件夹下:

Step 3. 添加环境变量。将OpenCVbin目录添加到环境变量里面:

C:\third_packages\opencv\opencv2410-qt5\bin

做到这一步。为Qt CreatorOpenCV 的环境就算是搭建完成了。

下面我们编写一个类似 HelloWorld 的程序来测试一下,刚刚搭建的环境是否可以使用。

6. 测试

Step 1 . 打卡 Qt Creator,新建一个空的控制台应用工程。

将工程名命名为:helloWorld

Step 2 . .pro文件中添加 OpenCV头文件链接文件 所在路径

将下面的代码添加到 helloWorld.pro 文件里面:

INCLUDEPATH+=C:\third_packages\opencv\opencv2410-qt5\include\opencv \
C:\third_packages\opencv\opencv2410-qt5\include\opencv2 \
C:\third_packages\opencv\opencv2410-qt5\include LIBS+= C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_calib3d2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_contrib2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_core2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_features2d2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_flann2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_gpu2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_highgui2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_imgproc2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_legacy2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_ml2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_nonfree2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_objdetect2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_ocl2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_photo2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_stitching2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_ts2410.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_video2410.dll.a \
C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_videostab2410.dll.a \

添加后,如图所示:

Step 3 . 先将图片 image.jpg(去网上随便找一个图片,然后命名为:image.jpg) 放在与 main.cpp 文件同一文件夹下。

Step 4 . 将下面的代码复制到main.cpp文件里面:

#include <QCoreApplication>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp> int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv); cv::Mat image = cv::imread("..\\helloWorld\\image.jpg");
cv::namedWindow("Image");
cv::imshow("Image", image); cv::waitKey(0);
return a.exec();
}

运行程序(快捷键:Ctrl + R):

注意:

图片的路径一定要正确。否则你会遇到下面的问题:

init done
opengl support available
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file D:\software_install_package_win\OpenCV2\opencv\sources\modules\highgui\src\window.cpp, line 269
terminate called after throwing an instance of 'cv::Exception'
what(): D:\software_install_package_win\OpenCV2\opencv\sources\modules\highgui\src\window.cpp:269: error: (-215) size.width>0 && size.height>0 in function imshow This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

解决办法:

就是使用正确的图片路径。并且路径不能有中文,空格和一些奇怪的符号。

搞定


Windows系统 为 QT5软件 搭建 OpenCV2 开发环境的更多相关文章

  1. Windows系统 为 Visual Studio软件 搭建 OpenCV2 开发环境

    Windows系统 为 Visual Studio软件 搭建 OpenCV2 开发环境 我们的电脑系统:Windows 10 64位 Visual Studio 软件:Visual Studio 20 ...

  2. Windows系统下Eclipse上搭建Python开发环境

    参考网站:   https://blog.csdn.net/zhangphil/article/details/78962159 1.先安装JDK 和python,参考网站:https://www.c ...

  3. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...

  4. 在Windows系统中安装集成的PHP开发环境

    原文:在Windows系统中安装集成的PHP开发环境 刚想学php的,又不会配置复杂php的环境,可以使用集成的,目前网上提供常用的PHP集成环境主要有AppServ.phpStudy.WAMP和XA ...

  5. windows下VisualStudio和QtCreator搭建Qt开发环境

    一.简介 集成开发平台IDE都有各自的长处,编写Qt程序可根据自己的喜好来选择相应的IDE.下述文章都是装载博友的文章,其中有很多细节还得自己调整. 二.详解 1.VisualStudio搭建Qt开发 ...

  6. Windows 8(64位)如何搭建 Android 开发环境与真机测试(转)

    可以参考http://wenku.baidu.com/link?url=ghU6IFS1WJXLFKfM_0efv9YQEnMDBrdi9CXwirSs5IOLLeUfdIOh8OOVv0DX89Lt ...

  7. Windows10系统下使用Docker搭建ClickHouse开发环境

    前提 随着现在业务开展,几个业务系统的数据量开始急剧膨胀.之前使用了关系型数据库MySQL进行了一次数据仓库的建模,发现了数据量上来后,大量的JOIN操作在提高了云MySQL的配置后依然有点吃不消,加 ...

  8. 在Mac 系统上使用MAMP搭建PHP开发环境

    1.下载MAMP套件 下载地址为https://www.mamp.info/en/ 2.安装此.dmg文件 3.配置apache虚拟主机 (1)在/Applications/MAMP/conf/apa ...

  9. ubuntu下搭建JAVA开发环境【转】

    转自:http://jingyan.baidu.com/article/86fae346b696633c49121a30.html JAVA开发环境是一种跨平台的程序设计语言,可以在windows.L ...

随机推荐

  1. 18 Python 模块引入

    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...

  2. 省略setget方法

    可以装一下这个插件再引入一个jar包实体类里不需要再写get/set方法了 maven坐标:<dependency> <groupId>org.projectlombok< ...

  3. RedHat 6.8 打开vga之后Login界面花屏

    /******************************************************************* * RedHat 6.8 打开vga之后Login界面花屏 * ...

  4. [SP839]Optimal Marks

    luogu 题意 给你一个无向图\(G(V,E)\). 每个顶点都有一个int范围内的整数的标记. 不同的顶点可能有相同的标记. 对于边\((u,v)\),我们定义\(Cost(u,v)=\rm ma ...

  5. BZOJ3489:A simple rmq problem

    浅谈\(K-D\) \(Tree\):https://www.cnblogs.com/AKMer/p/10387266.html 题目传送门:https://lydsy.com/JudgeOnline ...

  6. facebook注册不了无法打开官网的解决办法

    上周有一个朋友问到我一个问题,问怎么facebook注册不了,facebook官网也无法打开?这个问题不知道有没有人遇到过,以前这个问题也困扰了我挺长时间的,其实想想也挺简单的,由于facebook, ...

  7. 机器学习:PCA(人脸识别中的应用——特征脸)

    一.思维理解 X:原始数据集: Wk:原始数据集 X 的前 K 个主成分: Xk:n 维的原始数据降维到 k 维后的数据集: 将原始数据集降维,就是将数据集中的每一个样本降维:X(i) . WkT = ...

  8. mybatis 学习五 动态SQL语句

    3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使用myBatis的selectKey ...

  9. 【转】rails中的时区问题

    http://eric-gao.iteye.com/blog/1058197 解释4个时区设置的不同: config.active_record.default_timezoneconfig.time ...

  10. RabbitMQ 消息队列 安装及使用

    RabbitMQ 消息队列安装: linux版本:CentOS 7 安装第一步:先关闭防火墙 1.Centos7.x关闭防火墙 [root@rabbitmq /]# systemctl stop fi ...