zoukankan      html  css  js  c++  java
  • Qt | mingw+cmake编译Opencv4.1.2

    OpenCV

    获取 OpenCV

    从官网下载 openCV 在本指南中,使用版本4.1.2启动 opencv-3.2.0-vc14.exe 并让它解压到 d: 。现在文件夹 d:opencv _4.1.2_Sources已创建。

    将 minGW 添加到 windows PATH 变量

    打开控制面板, 
    系统和安全, 
    系统, 
    高级系统设置,
    环境变量,
    系统变量,
    变量名称:路径
    变量值:;E:QtToolsmingw810_32in
    PS:64位的则添加
    E:QtToolsmingw810_64in

    编译 OpenCV

    启动 cmake-gui.exe 然后选择以下设置:

     源代码在哪里:D:/opencv_4.1.2_Sources/opencv-4.1.2
     在哪里构建二进制文件:D:/opencv_4.1.2_Sources/opencv-4.1.2/build

     

    然后点击Configure,让cmake创建build目录,选择如下设置:

     为此项目指定生成器:MinGW Makefiles
     指定本机编译器,下一步
     编译器 C:E:QtToolsmingw810_32ingcc.exe
     编译器 C++:E:QtToolsmingw810_32ing++.exe
     结束
    
     选中复选框 [X]WITH_QT
     选中复选框 [X]WITH_OPENGL
    将D:opencv_4.1.2_Sourcesopencv-4.1.2CMakeLists.txt打开添加如下代码,保存后退出
    将 Qt5_DIR 设置为E:/Qt/5.15.1/mingw81_32/lib/cmake/Qt5
     set(CMAKE_PREFIX_PATH "E:/Qt/5.15.1/mingw81_32/lib/cmake/Qt5")
    PS:QT的版本看自己的安装情况而定
     取消选中复选框 []ENABLE_PRECOMPILED_HEADERS
    

    然后再次点击配置。

     将 QT_MAKE_EXECUTABLE 设置为 D:Qt5.9mingw53_32inqmake.exe
     将 Qt5Concurrent_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Concurrent
     将 Qt5Core_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Core
     将 Qt5Gui_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Gui
     将 Qt5Test_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Test
     将 Qt5Widgets_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Widgets
     将 Qt5OpenGL_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5OpenGL
     将 CMAKE_BUILD_TYPE 设置为 Release
    PS:此时生成的库为分散的,并不是一个dll,引入的时候不方便,可以勾选BUILD_opencv_world将动态库打包成一个

    然后再次点击配置 然后点击生成

    接下来打开cmd,输入以下命令。为了加快编译速度,-j 标志可用于同时运行多个编译作业。在 8 核 CPU 上,您可以将其设置为 8 或更高,以便使用所有内核。在具有 8GB 内存的 i7-3770@3.4GHz 核心上,编译大约需要 6 分钟。

     d:
     cd d:
     cd opencv-build  
     mingw32-make -j 8
     mingw32-make install
     
     
    

    如果在文件 opencv/sources/modules/videoio/src/cap_dshow.cpp 中出现以下错误:'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' 未在此范围内声明...

    试试这个:把下面这行:#define NO_DSHOW_STRSAFE,在行之前:#include "DShow.h"

    如果您有错误:'nullptr' 未在此范围内声明..

    试试这个:在 cmake 中选中 ENABLE_CXX11 框

    如果在文件 modulesvideoiosrccap_msmf.cpp 中出现错误: using invalid field '{anonymous}::ComPtr<T>::p'..

    试试这个:在 cmake 中取消选中 WITH_MSMF

  • 相关阅读:
    VM12+CentOS6.8安装VM tools
    PHP关联数组按某一value值排序
    命名规范
    JavaScript中的函数
    JavaScript中的for循环语句
    JavaScript中的判断和循环
    Javascript运算符的分类
    Html中的JavaScript
    【逆战】HTML5新语义化标签 (二)
    【逆战】HTML5新语义化标签 (一)
  • 原文地址:https://www.cnblogs.com/zhxzh/p/14972082.html
Copyright © 2011-2022 走看看