OpenCV+Qt+CMake安装+十种踩坑
平台:win10 x64+opencv-3.4.1 + qt-x86-5.9.0 + cmake3.13.4 x64
OpenCV+Qt+CMake安装,及目前安装完后打包:mingw32-make时报错的处理
一、下载
由于网速原因,官网不好下载,所以给出其他链接
OpenCV下载:https://blog.csdn.net/love666666shen/article/details/76449155
Qt下载:http://www.qtcn.org/bbs/read-htm-tid-1075.html
CMake下载:http://xiazai.zol.com.cn/detail/44/433377.shtml
CMake的官网比较容易打开,我下载了最新版的win x64版:cmake-3.13.4-win64-x64.zip
所以,综上,我下载了:opencv-3.4.1-vc14_vc15.exe + qt-opensource-windows-x86-5.9.0.exe + cmake-3.13.4-win64-x64.zip(官网下的最新版)
二、安装
1.OpenCV安装:opencv-3.4.1-vc14_vc15.exe
见我另一篇博客:Visual Studio 2015部署OpenCV 中四
双击该可执行文件后更改路径(我的是:D:\ProgramFiles)后点击“Extract”即可完成安装
注意:配置配置系统环境变量哦!我的PATH是:D:\ProgramFiles\opencv\build\x64\vc15\bin
备注:OpenCV安装会自动在D:\ProgramFiles文件夹下添加opencv文件夹
2.Qt安装:qt-opensource-windows-x86-5.9.0.exe
双击安装包后->出现Qt5.9.0设置,单击“下一步“->出现账户注册,点击"Skip"->出现欢迎对话框,点击"下一步"->出现安装文件夹对话框,更改后(我的是:D:\ProgramFiles(x86)\Qt5.9.0),
文件夹名字中间不能有空格,点击"下一步"->出现选择组件对话框,在Qt 5.9处勾选:MinGW 5.3.0 32 bit,Tools处勾选:MinGW 5.3.0,点击"下一步"->出现许可协议对话框,选择接受,
点击"下一步"->出现开始菜单快捷方式,输入默认:Qt5.9.0,点击"下一步"->出现已做好安装准备对话框,点击"安装"->出现正在创建维护工具对话框,点击"下一步"->
出现正在完成Qt5.9.0向导对话框,去掉勾选:登录Qt Creator,点击"完成"
附:
“Qt 5.9.1”节点下面是 Qt 的功能模块,包括用于不同编译器和平台的模块,这些模块包括内容如下:
- MinGW 5.3.0 32 bit 编译器模块。MinGW 是 Minimalist GNU for Windows 的缩写,MinGW 是 Windows 平台上使用的 GNU 工具集导入库的集合。
- 用于 UWP 编译的模块。UWP 是 Windows 10 中 Universal Windows Platform 的简称,有不同编译器类型的 UWP。
- 用于 windows 平台上的 MSVC 编译器模块,如 msvc2015 32-bit 和 msvc2015 64-bit 等。要安装 MSVC 编译器的模块,需要计算机上已经安装相应版本的 Visual Studio。
- 用于 Android 平台的模块,如 Android x86 和 Android ARMv7。
- Sources 是 Qt 的源程序。
- Qt Charts是二维图表模块,用于绘制柱状图、饼图、曲线图等常用二维图表。
- Qt Data Visualization 是三维数据图表模块,用于数据的三维显示,如散点的三维空间分布、三维曲面等。
- Qt Purchasing、Qt WebEngine、Qt Network Auth(TP)等其他模块,括号里的 TP 表示技术预览。
- Qt Scritp(Deprecated)是脚本模块,括号里的“Deprecated”表示这是个已经过时的模块。
“Tools”节点下面是一些工具软件,包括内容如下:
- Qt Creator 4.3.1 是用于 Qt 程序开发的 IDE。
- MinGW 5.3.0 是 MinGW 编译工具链。
- Strawberry Perl 是一个 Perl 语言工具。
注意:QT配置系统环境变量需要添加两个路径!
我的是:D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin和D:\ProgramFiles\Qt5.9.0\5.9\mingw53_32\bin,两个路径稍微有些差别,一定要小心哦!
3.CMake安装: cmake-3.13.4-win64-x64.zip(官网下的最新版)
cmake-3.13.4-win64-x64.zip解压即可,我的是放到:D:\ProgramFiles文件夹下
注意:配置配置系统环境变量哦!我的PATH是:D:\ProgramFiles\cmake-3.13.4-win64-x64\bin
另外附上exe的安装:
CMake3.4.3.exe安装
双击安装包后->出现欢迎使用CMake3.4.3安装向导对话框,单击“下一步“->出现许可证协议对话框,点击"我接受"->出现安装选项对话框,选择:Add CMake to the system PATH for all users
,勾选:创建桌面快捷方式,点击"下一步"->出现选择安装位置对话框,更改后(我的是:D:\ProgramFiles(x86)\CMake),点击"下一步"->出现选择“开始菜单”文件夹对话框,
默认输入:CMake 3.4.3,点击"安装"->点击"完成"。
注意:配置配置系统环境变量哦!注意:配置配置系统环境变量哦!注意:配置配置系统环境变量哦!注意:配置配置系统环境变量哦!
注意:配置配置系统环境变量哦!
三、OpenCV的编译
进入CMake->设置源代码和编译目标文件的路径(在D盘新建一个文件夹:buildOpenCV,用于存放编译后的目标文件,我的编译目标文件的路径:D:\Working\buildOpenCV和源文件的路径:
D:\ProgramFiles\opencv\sources)-> 点击“Configure按钮”,出现配置对话框->在“Specify the generator for this project”内选择“MinGW Makefiles”选项,在下边的编译器类型中,选择:
“Specify native compilers”,单击“Next”->在编译器选择器选择界面,在C后面选择C编译路径(我的为:D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin\gcc.exe),C++后选择C++编译器路径
(我的为:D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin\g++.exe),单击“Finish”按钮->单击“Configure”按钮
在配置完成后,选中"WITH_OPENGL"、"WITH_QT",将“WITH_IPP”取消选择,->再次单击“Configure”按钮
最后,在Name表中把变红色的路径更改下:
点击 ”Configure“,再次配置:(以我的为例)
不勾选 WITH_IPP
设置 QT_MAKE_EXECUTABLE 为 D:\ProgramFiles\Qt5.9.3\5.9.3\mingw53_32\bin\qmake.exe 备注:此项没有,需要点击Add Entry添加
Name:QT_MAKE_EXECUTABLE ,Type: PATH ,Value:D:\ProgramFiles\Qt5.9.3\5.9.3\mingw53_32\bin\qmake.exe
设置 Qt5Concurrent_DIR 为 D:\ProgramFiles\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Concurrent
设置 Qt5Core_DIR 为 D:\ProgramFiles\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Core
设置 Qt5Gui_DIR 为 D:\ProgramFiles\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Gui
设置 Qt5Test_DIR 为 D:\ProgramFiles\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Test
设置 Qt5Widgets_DIR 为 D:\ProgramFiles\5.9.3\mingw53_32\lib\cmake\Qt5Widgets
设置 Qt5OpenGL_DIR 为 D:\ProgramFiles\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5OpenGL
设置 CMAKE_BUILD_TYPE 为 Release 或者 RelWithDebInfo
再次点击 “Configure”,再次配置
四、安装过程十种踩坑
1.Cmake configure后一直报错——opencv_ffmpeg_dll,opencv_ffmpeg_64_dll下载超时
解决方案:在编译目标文件的路径(我的是:D:\Working\buildOpenCV)下找到CMakeDownloadLog.txt,里边有opencv_ffmpeg_dll和opencv_ffmpeg_64_dll下载链接:
(类似于:https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/)ocv_download(PACKAGE opencv_ffmpeg.dll)
分别输入到浏览器下载两个的文件,如果浏览器打不开,用手机下载,然后传到电脑上,并放到“编译目标文件的路径\3rdparty\ffmpeg”文件夹下
(我的是—D:\Working\buildOpenCV\3rdparty\ffmpeg)
2.之前下载的opencv_ffmpeg_dll,opencv_ffmpeg_64_dll拷贝入“编译目标文件的路径\3rdparty\ffmpeg”文件夹下,Cmake configure后还是报错——opencv_ffmpeg_dll,opencv_ffmpeg_64_dll下载超时
这是因为:下载opencv_ffmpeg_dll,opencv_ffmpeg_64_dll时默认以MD5校验,就是每次下载的文件内容一样,但是MD5检验码不一样
两种解决方案:
1)重新下载
2)在“OpenCV的解压路径\opencv\sources\.cache\ffmpeg”文件夹下,然后改名(我的更改为:b8120c07962d591e2e9071a1bf566fd0-opencv_ffmpeg.dll和dc9c50e7b05482acc25d6ce0ac61bf1d-opencv_ffmpeg_64.dll),此MD5校验码去编译目标文件的路径(我的是:D:\Working\buildOpenCV)下找到CMakeDownloadLog.txt
下分别对应拷贝,拷贝后更改文件名:MD5-opencv_ffmpeg.dll和MD5-opencv_ffmpeg_64.dll。
注意opencv_ffmpeg_dll和opencv_ffmpeg_64_dll的MD5检验码不一样哦!
3.执行mingw32-make
报错——D:\ProgramFiles不是内部或外部命令
解决方案:路径添加——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin
注意:QT配置系统环境变量需要添加两个路径:D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin和D:\ProgramFiles\Qt5.9.0\5.9\mingw53_32\bin,
两个路径稍微有些差别,一定要小心哦!
4.执行mingw32-make
报错——D:\ProgramFiles不是内部或外部命令
查资料疑似路径包含中文字符,重新卸载CMake后安装CMake,依旧报错,发现CMake会默认source code和binaries不变->删除buildOpenCV文件夹
下所有内容,重建buildOpenCV(编译后的目标文件夹)->按照Cmake的工程配置,仍然报错
最后发现CMake的Compelers的对话框中路径字符错误:(后边的斜杠错误)
C后边是——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin/gcc.exe
C++后边是——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin/g++.exe
解决方案:
C后边是——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin\gcc.exe
C++后边是——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin\g++.exe
注意:window下的路径后边的斜杠是“\”,而浏览器的是“/”
5.重新安装OpenCV后,CMake点击configure报错:无用的字符... invalid...
解决方案:发现CMake会默认source code和binaries不变->删除buildOpenCV文件夹下所有内容,重建buildOpenCV(编译后的目标文件夹)->
把OpenCV的最新安装路径放在在source code,然后按照Cmake的工程配置,正常
注意:重新安装OpenCV后系统环境变量也要更改哦!
6.执行mingw32-make
报错——多线程编译错误信息不明确-j8
解决方案:使用单线程编译
备注:make -jn
n为线程数,比如,我想要4线程编译:make -j4
7.执行mingw32-make
报错:... windres.exe: unknown option -- W ...
或者
- FORMAT is one of rc, res, or coff, and is deduced from the file name
- extension if not specified. A single file name is an input file.
- No input-file is stdin, default rc. No output-file is stdout, default rc.
解决方案:
在 cmake-gui 编译配置中:
- 不勾选
ENABLE_PRECOMPILED_HEADERS
然后重新Configure
-Generate
-mingw32-make
8.执行mingw32-make
到24%报错——D:\ProgramFiles\opencv\sources\3rdparty\protobuf\src\google\protobuf\stubs\io_win32.cc:94:3:
warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat]
return s == nullptr || *s == 0;
解决方案:
在 cmake-gui 编译配置中:
勾选 ENABLE_CXX11
然后重新Configure
-Generate
-mingw32-make
9.执行mingw32-make后45%左右遇到这种错误 :
sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA 错误
解决方案:
修改E:\OpenCV_3.3.1\opencv\sources\modules\videoio\src\cap_dshow.cpp
文件,在#include "DShow.h"
这行的上面
加一行#define NO_DSHOW_STRSAFE
然后重新Configure
-Generate
-mingw32-make
10.执行mingw32-make后然后继续编译,一路顺畅,然而98%时死掉:
报错如下:
[ 98%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.obj
C:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/cmath:1119:11: error: '::hypot' has not been declared
using ::hypot;
解决方案:把CMake配置中的BUILD_opencv_python3和下面那个
BUILD_opencv_python3
_bindings_generator的off掉(把后边的勾选去掉)
然后重新Configure
-Generate
-mingw32-make
注意:如果不使用opencv_python,需要在CMake界面取消勾选BUILD_opencv_python以及其他和 opencv_python有关的选项,否则编译不通过。
另外还有其他错误—可见此博客:https://blog.csdn.net/u010847519/article/details/61196093
以上只是通常出现的情况,其他情况请看Qt官网的帮助文档:https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows
附—常见十大编译问题解决方案:
1)将"opencv安装目录\sources"内的“cmakeOpenCVCompilerOptions.cmake”文件打开,
将其中的语句add_extra_compiler_option(-Werror=non-virtual-dtor)进行注释,改为# add_extra_compiler_option(-Werror=non-virtual-dtor)
2)在编译的过程中,可以在语句的末尾加上“-i”忽略错误,即使用语句:
mingw32-make -i
mingw32-make install -i
3)查看CMake的路径是否包含空格,如果包含,卸载重装
4)查看需要加入的系统路径,是否都添加了
5)查看CMake的Configure是否选为了MinGW Makefiles
6)自己定位Qt自带的C、C++编译器的位置:
C编译器的位置为——Qt安装路径\Qt5.9.0\Tools\mingw530_32\bin\gcc.exe
C++编译器的位置为——Qt安装路径\Qt5.9.0\Tools\mingw530_32\bin\g++.exe
7)在"二进制目标文件路径/CMake/CMakeOutput.log"、“二进制目标文件路径/CMake/CMakeError.log”内查找问题,从而发现解决方案
8)不能编译运行,提示找不到编译器,可能是因为在目录下面有中文符号
9)编译器内不能显示光标,此问题可能是因为使用谷歌输入法造成的,修改内嵌编辑模式
10)编译可以运行,在debug模式下exe文件无法运行,提示“无法启动此程序,因为程序中丢失qt5cored.dll”,该问题可能是没有设置环境变量,添加环境变量即可
OpenCV+Qt+CMake安装+十种踩坑的更多相关文章
- CentOS7.4安装MySQL踩坑记录
CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...
- ubuntu 下安装docker 踩坑记录
ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...
- sqlserver安装和踩坑经历
sqlserver安装和踩坑经历 下载 下载 安装 大致是按照这个来的 安装教程 出错 windows系统安装软件弹出"Windows installer service could not ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三)
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三) 安装PHP 1.yum方式安装PHP方法同安装apache一样传送门:linux cent ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(一) 一.Linux下安装MySQL 1.下载 下载地址:http://dev.mysql.co ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(二)
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(二) 安装apache web容器 . yum方式安装apache 注意apache在linux ...
- MySQL 5.7版本安装教程-踩坑总结
下载 MySQL下载地址 选择下载64位(看自己电脑是32位还是64位) 点击下载之后,它会让你登录,没有Oracle账户,跟着它的步骤注册一个就好了. 安装 打开下载好的压缩包解压到你的某一目录下, ...
- Linux Mint安装Docker踩坑指南
我家的服务器选用的Linux Mint系统,最近安装Docker的时候踩了一些小坑,但是总体还算顺利. 我们都知道Linux Mint系统是基于Ubuntu的,说实话用起来感觉还是很不错的,安装Doc ...
- MAC下STF安装及踩坑
[Mac OS X]brew: command not found ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebr ...
随机推荐
- keil5 MDK 链接报错 Error: L6410W 解决
keil5 MDK 报错 Build target 'Project' linking... .\Output\Project.axf: Warning: L6310W: Unable to find ...
- IDEA忽略某些文件
Settings→Editor→File Types 在下方的忽略文件和目录(Ignore files and folders)中添加自己需要过滤的内容 下图为我自己添加过滤的内容,例如:*.im ...
- ORACLE中用户等系统信息操作
1.查看所有用户:select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统 ...
- kubernets网络模式
参考:https://www.kubernetes.org.cn/2059.html
- 使用libvirtAPI打快照原理
参考: https://blog.51cto.com/3646344/2096347 https://blog.51cto.com/3646344/2096351(磁盘外部快照) API接口: htt ...
- java网络编程-单线程服务端与客户端通信
该服务器一次只能处理一个客户端请求;p/** * 利用Socket进行简单服务端与客户端连接 * 这是服务端 */public class EchoServer { private ServerSoc ...
- 一分钟搭建Spring Boot
1.首先你的电脑需要安装jdk.Apache Maven.Intellij IDEA 2.新建项目 (敲重点,有的同学有没有Spring Initializr 这个请到本文章后面看安装步骤) 3.选 ...
- rpm包安装的nginx热升级
文章目录一.本地环境基本介绍二.yum升级命令说明三.升级好nginx后如何不中断业务切换3.1.nginx相关的信号说明3.2.在线热升级nginx可执行文件程序一.本地环境基本介绍本次测试环境,是 ...
- c#mvc实现登录
本篇介绍MVC实现登录的方式,如下: 1.通过MVC Form 表单请求实现登录 2.通过AJAX GET 请求MVC Controller 实现登录 3.通过AJAX POST 请求MVC Cont ...
- xml文件中&符号需要转义为&
xml文件中&符号需要转义为&