zoukankan      html  css  js  c++  java
  • 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:ProgramFilesopencvuildx64vc15in

    备注: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:ProgramFilesQt5.9.0Toolsmingw530_32inD:ProgramFilesQt5.9.05.9mingw53_32in两个路径稍微有些差别,一定要小心哦!

    3.CMake安装: cmake-3.13.4-win64-x64.zip(官网下的最新版)

    cmake-3.13.4-win64-x64.zip解压即可,我的是放到:D:ProgramFiles文件夹下

    注意:配置配置系统环境变量哦!我的PATH是D:ProgramFilescmake-3.13.4-win64-x64in

    另外附上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:WorkinguildOpenCV和源文件的路径:

    D:ProgramFilesopencvsources)-> 点击“Configure按钮”,出现配置对话框->在“Specify the generator for this project”内选择“MinGW Makefiles”选项,在下边的编译器类型中,选择:

    Specify native compilers”,单击“Next”->在编译器选择器选择界面,在C后面选择C编译路径(我的为:D:ProgramFilesQt5.9.0Toolsmingw530_32ingcc.exe),C++后选择C++编译器路径

    (我的为:D:ProgramFilesQt5.9.0Toolsmingw530_32ing++.exe),单击“Finish”按钮->单击“Configure”按钮

    在配置完成后,选中"WITH_OPENGL"、"WITH_QT",将“WITH_IPP”取消选择,->再次单击“Configure”按钮

    最后,在Name表中把变红色的路径更改下:

    点击 ”Configure“,再次配置:(以我的为例)
        不勾选 WITH_IPP
        设置 QT_MAKE_EXECUTABLED:ProgramFilesQt5.9.35.9.3mingw53_32inqmake.exe  备注:此项没有,需要点击Add Entry添加

        Name:QT_MAKE_EXECUTABLE ,Type: PATH ,Value:D:ProgramFilesQt5.9.35.9.3mingw53_32inqmake.exe
        设置 Qt5Concurrent_DIRD:ProgramFilesQt5.9.35.9.3mingw53_32libcmakeQt5Concurrent
        设置 Qt5Core_DIRD:ProgramFilesQt5.9.35.9.3mingw53_32libcmakeQt5Core
        设置 Qt5Gui_DIRD:ProgramFilesQt5.9.35.9.3mingw53_32libcmakeQt5Gui
        设置 Qt5Test_DIRD:ProgramFilesQt5.9.35.9.3mingw53_32libcmakeQt5Test
        设置 Qt5Widgets_DIRD:ProgramFiles5.9.3mingw53_32libcmakeQt5Widgets
        设置 Qt5OpenGL_DIRD:ProgramFilesQt5.9.35.9.3mingw53_32libcmakeQt5OpenGL
        设置 CMAKE_BUILD_TYPERelease 或者 RelWithDebInfo


    再次点击 “Configure”,再次配置

    安装过程十种踩坑

    1.Cmake configure后一直报错——opencv_ffmpeg_dll,opencv_ffmpeg_64_dll下载超时

    解决方案在编译目标文件的路径(我的是:D:WorkinguildOpenCV)下找到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

    分别输入到浏览器下载两个的文件,如果浏览器打不开,用手机下载,然后传到电脑上,并放到“编译目标文件的路径3rdpartyffmpeg”文件夹下

    (我的是—D:WorkinguildOpenCV3rdpartyffmpeg)

    2.之前下载的opencv_ffmpeg_dll,opencv_ffmpeg_64_dll拷贝入“编译目标文件的路径3rdpartyffmpeg”文件夹下,Cmake configure后还是报错——opencv_ffmpeg_dll,opencv_ffmpeg_64_dll下载超时

    这是因为:下载opencv_ffmpeg_dll,opencv_ffmpeg_64_dll时默认以MD5校验,就是每次下载的文件内容一样,但是MD5检验码不一样

    两种解决方案:

    1)重新下载

    2)在“OpenCV的解压路径opencvsources.cacheffmpeg”文件夹下,然后改名(我的更改为:b8120c07962d591e2e9071a1bf566fd0-opencv_ffmpeg.dll和dc9c50e7b05482acc25d6ce0ac61bf1d-opencv_ffmpeg_64.dll),此MD5校验码去编译目标文件的路径(我的是:D:WorkinguildOpenCV)下找到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:ProgramFilesQt5.9.0Toolsmingw530_32in

    注意:QT配置系统环境变量需要添加两个路径:D:ProgramFilesQt5.9.0Toolsmingw530_32inD:ProgramFilesQt5.9.05.9mingw53_32in,

    两个路径稍微有些差别,一定要小心哦!

    4.执行mingw32-make报错——D:ProgramFiles不是内部或外部命令

    查资料疑似路径包含中文字符,重新卸载CMake后安装CMake依旧报错,发现CMake会默认source code和binaries不变->删除buildOpenCV文件夹

    下所有内容,重建buildOpenCV(编译后的目标文件夹)->按照Cmake的工程配置,仍然报错

    最后发现CMake的Compelers的对话框中路径字符错误:(后边的斜杠错误)

    C后边是——D:ProgramFilesQt5.9.0Toolsmingw530_32in/gcc.exe

    C++后边是——D:ProgramFilesQt5.9.0Toolsmingw530_32in/g++.exe

    解决方案:

    C后边是——D:ProgramFilesQt5.9.0Toolsmingw530_32ingcc.exe

    C++后边是——D:ProgramFilesQt5.9.0Toolsmingw530_32ing++.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:ProgramFilesopencvsources3rdpartyprotobufsrcgoogleprotobufstubsio_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.1opencvsourcesmodulesvideoiosrccap_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.0Toolsmingw530_32ingcc.exe

    C++编译器的位置为——Qt安装路径Qt5.9.0Toolsmingw530_32ing++.exe

    7)在"二进制目标文件路径/CMake/CMakeOutput.log"、“二进制目标文件路径/CMake/CMakeError.log”内查找问题,从而发现解决方案

    8)不能编译运行,提示找不到编译器,可能是因为在目录下面有中文符号

    9)编译器内不能显示光标,此问题可能是因为使用谷歌输入法造成的,修改内嵌编辑模式

    10)编译可以运行,在debug模式下exe文件无法运行,提示“无法启动此程序,因为程序中丢失qt5cored.dll”,该问题可能是没有设置环境变量,添加环境变量即可

  • 相关阅读:
    百度影音盒插入论坛帖子自动播放代码及方法
    vFloppy1.5-虚拟启动软盘
    飞秋的实现原理
    博客盈利请先考虑这七点
    下载站运行广告合作exe文件然后再运行程序文件的bat
    木马病毒是什么以及手工清除木马病毒具体步骤
    网站盈利模式分析分类
    软件更新原理
    浅析php学习的路线图
    网页常用分享代码大全(前端必备)
  • 原文地址:https://www.cnblogs.com/Alliswell-WP/p/OpenCV_Qt_CMake.html
Copyright © 2011-2022 走看看