• qt学习之旅--MinGW32编译opencv3.0.0


    1、配置环境

    Qt5.6.3+mingw49_32+cmake3.24.0+opencv3.0.0

    cmake下载:Download | CMake 

    opencv下载:Releases - OpenCV ,往后翻历史版本,我下载的是sources

    2、参考博客

    博客一:Qt配置OpenCV教程,亲测已试过(详细版)_Wi~的博客-CSDN博客_qt配置opencv
    博客二:Qt5.6.1+mingw32+opencv3.0使用成功_fang_chuan的博客-CSDN博客
    博客三:利用CMake生成OpenCV-3.0.0的VS2013工程(解决方案),并在VS2013下进行编译的详细过程记录(从失败到成功的曲折过程)_昊虹图像算法的博客-CSDN博客_opencv3.0 源码

    3、踩坑过程

    3.1、opencv版本过高,QT自带的MinGW编译不过报错

    开始时按照博客一的叙述,下载了cmake最新版:3.24.0,下载了opencv最新版:4.6.0。(QT是以前就下载好的版本,且选择的是mingw32位的)

    一直参照博客一的操作,到进入Windows Powershell,执行 mingw32-make,却出现报错:
     error: temporary of non-literal type 'google::protobuf::internal::CallOnceInitializedMutex' in a constant expression
       constexpr WrappedMutex() {}


    参考别的博主回答:

    所以便放弃了opencv4.6.0,后参考博客二,下载了旧版本3.0.0。

    3.2、须注释add_extra_compiler_option(-Werror=non-virtual-dtor)

    参考博客一、二,步骤基本差不多,值得注意的是,一定要:
    ①、不能勾选WITH_IPP,勾选WITH_OPENGL和WITH_QT
    ②、到 X:\XXXX\opencv\sources\cmake 下找到 OpenCVCompilerOptions.cmake文件,找到这句话 add_extra_compiler_option(-Werror=non-virtual-dtor) 注释掉他,不然会出现报错:error: base class 'struct IUnknown' has accessible non-virtual destructor [-Werror=non-virtual-dtor]        

    3.3、下载文件 ippicv_windows_20141027.zip

    当我换成opencv3.0.0后,cmake-gui.exe点击第二次configure时,整个过程花费时间不少,时间主要是耗费在了下载文件 ippicv_windows_20141027.zip上,如下图所示:
    最终还是没有下载成功,见下面的报错说明。
    在这里插入图片描述

    1. ICV: Downloading ippicv_windows_20141027.zip...
    2. CMake Error at 3rdparty/ippicv/downloader.cmake:71 (file):
    3. file DOWNLOAD HASH mismatch
    4. for file: [F:/Build-openCV3.0.0/opencv-3.0.0/3rdparty/ippicv/downloads/windows-b59f865d1ba16e8c84124e19d78eec57/ippicv_windows_20141027.zip]
    5. expected hash: [b59f865d1ba16e8c84124e19d78eec57]
    6. actual hash: [827569eea3481e6da39d28713cc4309d]
    7. status: [28;"Timeout was reached"]
    8. Call Stack (most recent call first):
    9. 3rdparty/ippicv/downloader.cmake:108 (_icv_downloader)
    10. cmake/OpenCVFindIPP.cmake:235 (include)
    11. cmake/OpenCVFindLibsPerf.cmake:12 (include)
    12. CMakeLists.txt:526 (include)
    13. CMake Error at 3rdparty/ippicv/downloader.cmake:75 (message):
    14. ICV: Failed to download ICV package: ippicv_windows_20141027.zip.
    15. Status=28;"Timeout was reached"
    16. Call Stack (most recent call first):
    17. 3rdparty/ippicv/downloader.cmake:108 (_icv_downloader)
    18. cmake/OpenCVFindIPP.cmake:235 (include)
    19. cmake/OpenCVFindLibsPerf.cmake:12 (include)
    20. CMakeLists.txt:526 (include)

     上面的报错是说文件 ippicv_windows_20141027.zip下载失败。所以我们得重新手动下载后,将ippicv_windows_20141027.zip 放于文件夹X:/XXX/opencv-3.0.0/3rdparty/ippicv/downloads/windows-b59f865d1ba16e8c84124e19d78eec57/下(不要解压):
    该错误参考博客三改正完成

    3.3.1、百度网盘资源: ippicv_windows_20141027.zip

    链接:https://pan.baidu.com/s/1pz_pufD0CFUxLN3cpqpwLw?pwd=jng7 
    提取码:jng7 

  • 相关阅读:
    7.4 条件变量示例
    项目中多级缓存设计实践总结
    Go 接口
    什么是SVN(Subversion)?
    Python读取mongodb数据库
    CRM客户管理系统英文专业版
    Exception in thread “main“ java.lang.UnsupportedOperationException解决办法
    iMazing2023免费版苹果iPhone手机备份应用软件
    Java 在PDF中添加水印
    计算机竞赛 机器视觉目标检测 - opencv 深度学习
  • 原文地址:https://blog.csdn.net/qq_40594137/article/details/126104187