一准备工作:
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 进行配置
选择 MinGW Makefiles, 勾选 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, 不能勾选 WITH_IPP(默认不勾选), 再次点击 configure
注意: 若仍有红色出现, 再次点击 configure 直至红色消失 (有时需要多次, 一般情况下两次即可) 最后, 点击 Generate 按钮, 完成后即可关闭 CMake
2. 编译
在编译之前, 在源目录 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 ...
根据提示依据如下思路解决: in cmake 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
四文件大小
不同版本的 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 编译后即可
六测试示例程序
- #include <iostream>
- #include <opencv2/core/core.hpp>
- #include <opencv2/highgui/highgui.hpp>
- using namespace cv;
- using namespace std;
- int main()
- {
- cv::Mat image;
- std::cout << "This image is" << image.rows << "x" << image.cols << std::endl;
- // 绝对路径 + 图片名称
- image = cv::imread("E:\\QT Project\\OpenCV\\rose.png");
- if (image.empty())
- {
- std::cout << "Cant loading images." << std::endl;
- return -1;
- }
- cv::namedWindow("Original Image");
- cv::imshow("Original Image", image);
- cv::waitKey(0);
- return 0;
- }
加载图片测试代码段
来源: https://www.cnblogs.com/Shuqing-cxw/p/8577336.html