现在才发现 openCV 3.0 的正式版已经发布了(确切来说是在 2015-06-04 发布的),正好前几天 Qt 5.5 也发布了,是时候更新一次工具了。
由于 openCV 3.0 Windows 版编译好的只有给用 VS 用的,所以需要在 Windows 上 MinGW 版的 Qt 用 openCV 只能自己编译了。 当然 msvc 版的 Qt 是可以直接用 VS 的 openCV 的,我都像换成 msvc 的 Qt 了。
过程:
- 下载 CMake
- 设置环境变量,把 Qt 的“MinGW\bin” 和 “CMake\bin” 目录添加进系统 PATH 环境变量。
- 用 CMake 生成 “MinGW Makefiles” (Specify native compilers 模式)
- 对生成的文件用 MinGW 执行 “mingw32-make” 和 “mingw32-make install”,生成的 install 文件夹里的内容即为所需内容。
在编译过程中值得注意的是:
把 Qt 所自带(安装时需要勾选) MinGW 目录:"...\Qt\Tools\mingw492_32\bin" ,添加进系统 PATH 环境变量后,很可能不会立即生效,需要注销或者重启一下。CMake 也一样。
-
如果遇到"CMAKE_MAKE_PROGRAM",未找到的情况(NOTFOUND)需要手动设置为"...\Qt\Tools\mingw492_32\bin\mingw32-make.exe"文件。
-
有的 Qt 目录需要手动设置,在 "...\Qt\5.5\mingw492_32" 里找它们。
-
“WITH_IPP” 要去掉,再勾选 “WITH_QT” 和 “WITH_OPENGL”。另外如果需要编译静态库,可以在这里去掉 “BUILD_SHARED_LIBS”。
- 编译很肯能出错,这时应该删掉所有生成的文件,更改 "...OpenCV\sources\cmake\OpenCVCompilerOptions.cmake" 文件里的这一行: “add_extra_compiler_option(-Werror=non-virtual-dtor)” 为 “#add_extra_compiler_option(-Werror=non-virtual-dtor)”,也就是加上 “#” 注释掉,或者删除掉也可以。再重新编译。
Qt 项目里配置的样子:
INCLUDEPATH +=
D:/English_Only/opencv/build/x86/QT/include/opencv \
D:/English_Only/opencv/build/x86/QT/include/opencv2 \
D:/English_Only/opencv/build/x86/QT/include
LIBS += -L
D:/English_Only/opencv/build/x86/QT/lib/libopencv_*.a
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;