平台: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”,该问题可能是没有设置环境变量,添加环境变量即可

转载于:https://www.cnblogs.com/Alliswell-WP/p/OpenCV_Qt_CMake.html

OpenCV+Qt+CMake安装+十种踩坑相关推荐

  1. cmd命令安装composer踩坑

    cmd命令安装composer踩坑 很多童鞋在依照composer官网 官网教程 用命令行安装composer时回踩到以下坑,却不知道如何解决 在此我分享下自己的经验,写个不好请多海涵 打开命令行执行 ...

  2. GPCC安装以及踩坑经历

    gpcc安装以及踩坑经历 官方下载地址文档 https://network.pivotal.io/products/pivotal-gpdb#/releases/29190 安装开始之前 chown ...

  3. ubuntu 20.04 安装软件踩坑

    ubuntu 20.04 安装软件踩坑 1.搜狗输入法 安装后需要重启一次 重启后讲sogoupinyin添加好,右上角如果没有搜狗就再重启一下 右上角出现了搜狗也是打不出中文的,因为没有安装依赖 安 ...

  4. Manjaro 安装配置踩坑

    Manjaro 安装配置踩坑 其实manjaro和arch的英文社区上都讲的很清楚, 推荐看英文原版资料. 制作USB安装器 参考资料 : Manjaro 官方User Guide 官网下载镜像 Li ...

  5. 安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理

    安装 JupyterHub 踩坑指南 JupyterHub 简介 Jupyter Notebook and JupyterLab Jupyter Notebook 简介 JupyterLab 简介 安 ...

  6. Qt使用Oracle数据库踩坑教程

    简述 最近一段时间在Qt中使用Oracle数据库积累了一些踩坑过程,以及qt使用Oracle数据库的一些操作. 目录 简述 1. Oracle数据库安装 2. Oracle数据库安装注意事项 3. Q ...

  7. Pytorch可视化工具tensorboardX(安装不踩坑)

    安装方法(如何不踩坑,已修改): 首先默认你已经安装好pytorch(如果木有,为什么点进来呢) 安装tensorboardX pip install tensorboardX 安装tensorflo ...

  8. Anaconda3安装tensorflow踩坑记录

    Anaconda3安装tensorflow2.2踩坑记录 本次安装是在py版本为3.6的虚拟环境下安装: 首先激活环境 activate py36(name) activate py36 然后下载 p ...

  9. mac的angular/cli安装及踩坑记录

    一.angular/cli的安装 step1:node+npm安装 首先使用node -v命令查看mac是否已安装node与npm(如已安装则跳过) node -v npm -v 安装Node.js ...

最新文章

  1. keras神经网络回归预测_如何使用Keras建立您的第一个神经网络来预测房价
  2. 检查联网状态并设置网络
  3. [转]MyBatis的foreach语句详解
  4. mysql复制功能介绍
  5. html5布局总结,HTML5网页布局的总结
  6. C语言以字符串的形式读写文件
  7. [神奇的问题啊,GetProcAddress一个不存在的API时,返回非空值,且指向另一个API]谜团解开,错不在GetProcAddress...
  8. leetcode 78.子集 dfs解法
  9. unity byte[]的压缩和解压
  10. 使用闲置迅捷无线路由器桥接指南(扩大WIFI覆盖面)
  11. Android布局——水滴屏全屏设置
  12. 小程序公众图标素材6113个菜单栏素材
  13. cas5.3.2单点登录-配置记住我(十六)
  14. cf#94-div1-A. Statues
  15. 论文笔记(三):DAML: Dual Attention Mutual Learning between Ratings and Reviews for Item Recommendation
  16. 腾讯云函数要收费了,试试阿里云的云效codeup吧,这里有教程
  17. 如何使用2FA秘钥登录Facebook
  18. Fiddler 抓包工具“测试人员”高频使用方法
  19. 使用vue控制video视频和弹幕功能
  20. 分类算法——K-邻近

热门文章

  1. 敏捷项目管理—敏捷四宣言
  2. 三. python面向对象(私有属性和私有方法 私有静态方法 私有类方法)
  3. c语言枚举类型变量的作用
  4. 《软件需求模式》阅读笔记04
  5. 简单的横向ListView实现(version 3.0)
  6. llinux基本操作
  7. css js 兼容问题
  8. bootstrap validator 出现Maximum call stack size exceeded
  9. 查询oracle中所有用户信息
  10. fem求解二维时谐电磁场问题