编译opencv for QT

准备工作:

  1下载Qt5.10.0 和Qt Creator 4.5.0软件(http://download.qt.io/official_releases/qt/) 

  2.下载opencv3.40 (https://opencv.org/releases.html) 

  3.下载Cmake3.10.1 (https://cmake.org/download/) 

软件安装

1.qt软件安装与配置

①安装Qt5.10.0,我的安装路径:D:\Qt

注意点:在弹出的“选择组件窗口”中,选择相关组件(支持QtCreator开发方式如下图所以,支持VisualStudio开发方式则增加相应的MSVC对应的版本),选择组件中关于“Strawberry Perl 5.22.1.3”的不勾选(这个组件在非首次安装时容易报错且当下学习使用不到),勾选下方工具的MinGw5.3.0设置完毕后,点击“下一步按钮”进入下一步安装即可。

②安装Qt Creator 4.5.0软件,安装D:\Qt目录下,选项默认即可。

③设置环境变量,在系统环境变量path中添加:

D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin;

D:\Qt\Qt5.10.0\Tools\mingw530_32\bin

2. CMake安装和配置

默认安装,不一定非要安装在C盘,可以放入与QT安装的目录下。

注意点:在安装过程中勾选“为所有用户添加环境变量”:Add CMake to the system PATH for all users 。

3.opencv安装

opencv的安装实际上是解压,解压到用户指定位置,在这里我的目录是D:\Qt,这样安装路径统一在同一个文件夹下。

Opencv库的编译

1.配置CMake编译条件

①打开CMake(cmake-gui)。

②选择OpenCV安装目录下的源码文件:D:\Qt\opencv3.40\opencv\sources

③选择想要编译输出目录文件路径,如统一存在统一目录下,在D:\Qt文件下新建一个opencvbuild3.40 文件夹,选择该路径: D:\Qt\opencvbuild3.40

④点击Configure进行配置。

⑤选择MinGWMakefiles,勾选Special native compilers然后点击Next

⑥配置编译器

在下图1处,C编译器选择D:\Qt\Qt5.10.0\Tools\mingw530_32\bin\gcc.exe;

在下图2处,C++编译器选择D:\Qt\Qt5.10.0\Tools\mingw530_32\bin\g++.exe

Fortran不用填写,然后点击finish。注意:此过程保证网络畅通,因为需要下载几个文件。

⑦等待一会儿后,会有一堆红色出现,勾选WITH_QT和WITH_OPENGL、ENABLE_CXX11(否则报错’nullptr’ was not declared in this scope),不能勾选WITH_IPP(默认不勾选),再次点击configure。

然后点击configure,这时会报错,我们修改qmake的路径和lib库,如图所示:

再次点击configure,报错,修改opengl路径,:

编译opencv for QT_第1张图片

注意:若仍有红色出现,再次点击configure直至红色消失(有时需要多次,一般情况下两次即可)。最后,点击Generate按钮,完成后即可关闭CMake。

最后一步,直接点击:Generate:出现Generating done,表示完成Makefile的创建

  2. 编译

接下来,cmd切换到目标目录,比如我这是:C:\Users\11011430\Desktop\opencv\BD

输入命令:mingw32-make进行编译。

  ①在编译之前,在源目录D:\Qt\opencv3.4.0\opencv\source\cmake\下找到OpenCVCompilerOptions.cmake文件。

    记事本打开文件,找到add_extra_compiler_option(-Werror=non-virtual-dtor)

    将它注释掉,前面加#变成:#add_extra_compiler_option(-Werror=non-virtual-dtor)

  ②然后按住快捷键win+R,运行cmd

  进入编译输出目录D:\Qt\opencvbuild3.40,然后输入”mingw32-make“命令. 备注:加速编译时间可以使用可选参指令” mingw32-make -j 8 “(处理器是i7-3770为8核),

  注意点:编译opencv,此过程时间较长,电脑编译了一个多小时。

  ③直到编译结束。然后输入命令:mingw32-make install ,大约一到两分钟就安装完成了。

   注意点:若编译期间出现如下错误:

    错误: ... windres.exe: unknown option -- W ...

    根据提示依据如下思路解决: incmake uncheck ENABLE_PRECOMPILED_HEADERS

    即:mingw32-make ENABLE_PRECOMPILED_HEADERS -j 8

    http://answers.opencv.org/question/168538/building-opencv-with-mingw-gcc-710-and-cmake-390-windresexe-unknown-option-w/

    错误:in the file opencv/sources/modules/videoio/src/cap_dshow.cpp, you have the following error : 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...

    解决:put the following line: #define NO_DSHOW_STRSAFE, before the line : #include "DShow.h"

    即:在D:\Qt\opencv3.4.0\opencv\source\modules\videoio\src\cap_dshow.cpp中,在#include “DShow.h“上一行中插入: #define NO_DSHOW_STRSAFE

    备注:参考地址:

https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows

cap_dshow.cpp中添加下面两句解决“错误:in the file opencv/sources/modules/videoio/src/cap_dshow.cpp, you have the following error : 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...”

#defineNO_DSHOW_STRSAFE

#include"DShow.h"

文件大小

不同版本的OpenCV编译安装后的文件不同,3.4.0版本编译后750M,使用2.4.13.3版本文件有1.98G。若需要裁剪倾向请参考如下博文:https://www.cnblogs.com/TooyLee/p/6438070.html。

备注:想生成目录结构到txt文件,可在cmd中转到某目录,输入tree /f > list.txt

使用Qt加载OpenCV配置

  ①环境变量添加D:\Qt\opencvbuild3.40\install\x86\mingw\bin

  ②打开Qt Creator新建项目(非Qt项目,纯C++应用),命名为OpenCV后,打开OpenCV.pro文件,添加如下语句:

  INCLUDEPATH += D:\Qt\opencvbuild3.40\install\include

  LIBS += -L D:\Qt\opencvbuild3.40\install\x86\mingw\bin\libopencv_*.dll

  LIBS += -L D:\Qt\opencvbuild3.40\install\x86\mingw\lib\libopencv_*.a

③右击项目文件OpenCV文件夹,选择“执行qmake“编译后即可。

Qt5.10.1+OpenCV3.1.0配置教程

本机环境:Windows10-64位  Qt 5.10.1  OpenCV3.1.0 CMake3.11.0

系统环境变量设置

首先在本机上装好CMake和Qt

将自己安装路径下bin,例如本机的这两个路径添加到Path中。提示:先在环境变量中配置后编译工具的路径,在使用cmake时可以免去手动添加路径的操作;

E:\Software\QT\cmake_3_11\bin

E:\Software\QT\Qt5_10\Tools\mingw530_32\bin

E:\Software\QT\Qt5_10\5.10.1\mingw53_32\bin

编译opencv for QT_第2张图片

配置CMake

安装目录:E:\Software\QT\cmake_3_11  ;打开E:\Software\QT\cmake_3_11\bin

运行cmake-gui.exe

编译opencv for QT_第3张图片

1.设置好路径,点击左下角的【Configure】 

2.按红框选择,然后点【Next】

3.配置CC++编译器路径(P.S.具体路径请根据自己电脑中QT的安装目录)

E:/Software/QT/Qt5_10/Tools/mingw530_32/bin/gcc.exe

E:/Software/QT/Qt5_10/Tools/mingw530_32/bin/g++.exe
选择好后,点【Finish

编译opencv for QT_第4张图片

4.等待配置

5.勾选中“WITH_OPENGL”、“WITH_QT”;不勾选“WITH_IPP”。然后再次点【Configure】

6.上步运行完毕后,点【Generate】

7.上步生成完毕后,关闭对话框即可

编译OpenCV

1.在编译生成的文件夹的空白处Shift+右键,选择“在此处打开命令窗口”。输入“mingw32-make”命令,按回车进行编译。

编译opencv for QT_第5张图片

配置Qt中的OpenCV

7.在.pro文件中的底部,添加如下内容

(1)模版:

#绝对路径 环境变量添加C:\qtopencv\install\x86\mingw\bin
#INCLUDEPATH += E:\qtopencv\install\include
 
#LIBS += -L E:\qtopencv\install\x86\mingw\bin\libopencv_*.dll
#LIBS += -L E:\qtopencv\install\x86\mingw\lib\libopencv_*.a
#相对路径 qt版本编译好的opencv库文件夹放在工程源码即:和.pro,.main.cpp函数放在一起
#环境变量添加C:\qtopencv\install\x86\mingw\bin
#INCLUDEPATH += "$$PWD"/qtopencv/install/include \
##               "$$PWD"/opencv310_qt5_5_7/include\opencv \
##               "$$PWD"/opencv310_qt5_5_7/include\opencv2 \
#LIBS += "$$PWD"/qtopencv/install/x86/mingw/bin/libopencv_*.dll
#LIBS += "$$PWD"/qtopencv/install/x86/mingw/bin/libopencv_*.dll.a

 

你可能感兴趣的:(c++,cmake,qt,opencv)