QT + OpenCV + MinGW 在windows下配置开发环境
由于研究项目需要,最近开始接触C++界面设计,关于“QT + OpenCV + MinGW在windows下配置开发环境”着实让人头疼,单次配置时间相当长,也十分不容易,本人第一次配置成功就花了两天,期间查找了许多帖子,现在整理出来一套完整配置方案,附加几个注意点,供大家参考。
一、为什么要选择QT
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擅长的视觉算法有机结合起来,从而让我们快速的进行项目的构建和开发。
二、下载必备软件
- QT SDK for Open Source C++ development on Windows(在google上搜索一下官方网站即可找到),QT官网提供开源软件,注册一下即可下载。
- OpenCV 2.4.10:可以到opencv官网( http://sourceforge.net/projects/opencvlibrary/files/opencv-win)选择最新的OpenCV版本,由于本人电脑本来就有opencv2.4.10,故选择此版本,安装之后的目录下面有源码和个版本的lib和dll,不过为避免出现问题,还是自己编译吧。
- Cmake
编译opencv需要用到CMake这个工具。
下载:https://CMake.org/download/
建议下载安装版的,这个可以自动加入系统环境变量。
2. 安装,选择第二个,为所有用户添加系统路径。之后Qt可以自动找到CMake
三、安装QT Creator
1. 下载:http://download.qt.io/archive/qt/5.8/5.8.0/
建议选择离线安装包,在线安装太慢,经常会安装失败。
选择MinGW版本。VS 版本还需要安装对应的VS,单独安装Qt 是不可用的,而MinGW版本自身带有MinGW。
建议下载最新版本,因为里面带的MinGW版本较高,如果MinGW版本比opencv需要的版本低会编译失败。
2. 安装:安装路径不能有空格,我安装在默认路径,然后一路NEXT。
四、下载OpenCV
下载opencv for Windows
https://opencv.org/releases.html
连接里头有OpenCV各个版本,建议不要下载最新版本,只要下载源码就行了。
如果编译失败,试试其他版本的opencv,MinGW版本要跟opencv版本对应才能编译成功。
五、通过Cmake对OpenCV进行配置和生成
第一行添加Opencv源代码路径,第二行为生成的minGW编译文件所在位置。
点击左下方的configure,会提示选择编译器,此处一定要选择"Specify native compilers",之前直接选取“Use default native compilers”,最后在配置完成,生成动态库后在QT中使用经常出错,后重新选择配置编译才可以正常使用。
此处选择的编译器一定要是在环境变量中的C和C++编译器。g++.exe和gcc.exe在QT安装目录下Tool\Mingw5.3.0文件夹下。
如果出现上图红色错误,检查一下相关文件路径是否出错,如果出错,改成相应路径即可,例如:CMAKE_INSTALL_PREFIX的路径为install的路径,再次点击左下方的configure,成功后,有两处需要更改。
上图选取的地方是CMake生成的configure类型,可以填入Debug和Release,这样生成的库文件就可以指出上面两种版本的编译。
另外必须要勾选下图中的 WITH_QT,WITH_OPENGL以使CMake编译出可以供Qt使用的库文件
至此,就可以点击generate进行生成了。
六、开始编译和安装
在完成以上所有步骤之后,打开控制台,进入生成的目录中。依次键入 mingw32-make 和 mingw32-make install ,如之前配置无误,程序就会依次开始编译和安装,下图依次为相应结果:
键入mingw32-make(下图为网络图片,若按照上面CMAKE的配置路径改成
之前设置的mingw编译路径和mingw32-make.exe相关路径即可。)
回车开始编译,编译时间较久。
当编译完成后键入上图路径(第一次键入的命令后加install打包编译文件,路径修改方法同上)。
打包过程速度很快。
至此,Opencv的QT库已经编译完成。
在QT工程文件中pro添加Opencv的头文件路径和库即可完成。
按照上图的方法修改成相应的路径(网络图片),但是会出现一些错误,什么错误我忘记了,记得解决方法是在(LIBS+=)后面加上(-I)。
之后在头文件中包含一下即可使用。
QT + OpenCV + MinGW 在windows下配置开发环境的更多相关文章
- 【Objective-C】Windows下Objective-C开发环境配置
[Objective-C]Windows下Objective-C开发环境配置 ftp://ftpmain.gnustep.org/pub/gnustep/binaries/windows/ 最近打 ...
- windows下spark开发环境配置
http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...
- Metabase在Windows下的开发环境配置
Metabase在Windows下的开发环境配置 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} Metabase在Wind ...
- windows下STM32开发环境的搭建
一.概述 1.说明 笔者已经写了一篇Linux下STM32开发环境的搭建 ,这两篇文章的最区别在于开发环境所处的系统平台不一样,而其实这个区别对于开发环境的搭建其实影响不大,制作局部上的操作上发生了改 ...
- windows下配置lamp环境(3)---配置PHP5.4
下面配置php Php文件夹里有两个php.ini-*文件,随便修改一个,去掉后缀,变成php.ini (如图) 打开php.ini ,添加php扩展目录723行左右(其实放哪都无所谓,只不过php. ...
- windows下配置lamp环境(5)---配置MySQL5.6
开始配置mysql 1.创建配置文件my.ini 1.进入C:\wamp\MySQL 2.把my-default.ini 另存一份:my.ini 3.开始编辑mysql的配置文件,打开my ...
- windows下配置lamp环境(0)---软件获取
工作快一年了,还没有怎么配置过服务器环境,经常使用集成套件wampserver,为了复习配置wamp服务器 特意在虚拟机中测试安装步骤如下. 安装前步骤:下载软件.软件下载地址如下: 1.apache ...
- windows下配置lamp环境(2)---配置Apache服务器2.2.25
配置Apache 配置Apache时,先要找到安装目录中的主配置文httpd.conf,使用文本编辑器打开,最好不要使用windows自带的编辑器,可以使用NotePad++, vim,或者subli ...
- windows下配置lamp环境(1)---安装Apache服务器2.2.25
window下lamp成为wamp; 安装wamp环境的第一步是安装Apache服务器.下面开始安装步骤图文并茂. 一.双击安装包点“next”进行下一步,然后同意协议(这张图没有截):
随机推荐
- 网页静态化技术--Freemarker入门
网页静态化技术:为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又 ...
- msgid 属性
Android源码中的String.xml文件,msgid这个属性是干嘛的? 全局资源,方便引用.比如在布局的text和activity中用到.
- Linux系统 磁盘IO过高排查总结
最近做的一个电商网站因为磁盘 I/O 过高导致访问速度奇慢,问题存在两个月有余未得到解决办法.此次排查原因的经验可以作下次问题的参考. 1.会看懂 top 系统命令出来的各项参数.此次是无意中发现 u ...
- Java基础学习-类型转换之隐式转换
+是一个运算符,我们应该能够看懂,做数据的加法. boolean类型不能转换为其他的数据类型. 默认转换: byte,short,char--int--float--double by ...
- Page.Cache
https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.page.cache?view=netframework-4.8 Gets the ...
- Java集合源码分析之LinkedList
1. LinkedList简介 public class LinkedList<E> extends AbstractSequentialList<E> implements ...
- Pandas 基础(13) - Crosstab 交叉列表取值
这小节的题目看起来还挺晦涩的, crosstab 是 pandas 的一个函数, 作用还蛮强大的, 一起来看一下吧~~~ 首先还是先引入一个例子文件: import pandas as pd df = ...
- js switch 字符串
//字符串var day="dd";switch (day){case "dd": x="day it's dd"; break;case ...
- Log4net详细说明
1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual S ...
- sparkSQL脚本更改问题
相应的pom依赖文件 <dependencies> <!-- <dependency> <groupId>org.apache.storm</group ...