一、环境条件说明:
操作系统:Windows10 64环境
编译工具:用Qt5.12.12自带的mingw730_64构建
构建对象:编译OpenCV4.1.0的Release 64位和Debug 64位动态链接库
构建工具:CMake中的参数配置
二、cmake-3.20.6中的参数配置
1、按照下图配置好OpenCV4.1.0的源代码目录和构建编译输出目录,然后点击Configure按钮,如下图所示:
2、在弹出的界面中,按照下图配置构建工程类型、gcc和g++编译器路径:
3、在使用CMake编译OpenCV_contrib时遇到的错误,由于源文件未成功下载导致编译失败。通过分析CMake的日志文件CMakeDownloadLog.txt,可手动下载缺失的opencv_ffmpeg.dll并放置于正确位置。OpenCV4.1.0所需要的opencv_ffmpeg.dll和opencv_ffmpeg_64.dll下载网盘地址如下:
链接: https://pan.baidu.com/s/1AWnC_MjuAAWYgwvlHziTqA?pwd=juta 提取码: juta
4、把BUILD_opencv_world、OPENCV_ENABLE_NONFREE选项选中,如下图:
5、分别设置OPENCV_EXTRA_MODULES_PATH为扩展模块的modules目录,如下图:
6、分别开启WITH_QT、WITH_OPENGL、WITH_OPENMP等参数选项,如下图:
7、分别关闭ENABLE_PRECOMPILED_HEADERS、WITH_OPENCL_D3D11_NV、WITH_IPP等参数选项,如下图:
8、在cmake-3.20.6界面中依次搜索example和test,取消例子、测试应用程序的编译。因为在Windows10 64环境下用Qt5.12.12自带的mingw730_64构建编译OpenCV4.1.0时,测试应用test会报编译错误,导致编译OpenCV4.1.0的Debug 64位动态链接库失败。如下图:
9、编译时会提示以下错误:第一个错误提示的是:undefined reference to `cvv:::qtutil::ZoomableImage::updateArea(QRect,double)'之类的,后面还有很多与opencv的cvv模块有关的报错。根据个人编译实践猜测,可能是由于扩展模块中的cvv模块的开启会与BUILD_opencv_world设置有点冲突。参考这篇博文解决:编译opencv 遇到undefined reference to `cvv::XX 错误:https://blog.csdn.net/panmengjiaa/article/details/114693766。可在cmake-3.20.6界面中点击“Add Entry”按照下图添加变量BUILD_opencv_cvv,如下图所示:
10、配置完上述参数之后,再次点击Configure,如果没有错误,可点击Generate,没有错误提示之后就可以依次执行以下目录进行编译和安装:
#使用下面命令开始编译opencv,需要20分钟左右。其中,-j 8 代表多核编译
mingw32-make -j 8
#编译完成之后,输入如下指令安装
mingw32-make install
11、注意按照上述步骤默认编译出来的是OpenCV4.1.0的Release 64位动态链接库。可在cmake-3.20.6界面中搜索CMAKE_BUILD_TYPE,将其设置为Debug,保持其他参数值不变,再次按照前一步中的说明编译OpenCV4.1.0的Debug 64位动态链接库,如下图所示:
----------------------------------------------------------------------------------------------------------------------
详细的步骤可参考以下链接:
1) 三、Qt配置opencv环境(详细,简易)https://download.csdn.net/blog/column/11496363/121620850
2) qtopencv配置https://blog.51cto.com/u_12929/12714843
3) Qt5.12配置OpenCV教程https://www.cnblogs.com/ybqjymy/p/18070391
4) 【开发实战】QT5 + OpenCV4开发环境配置应用演示https://zhuanlan.zhihu.com/p/719915221
5) OpenCV4 + Qt5 开发环境配置合集(C++/Python):https://www.bilibili.com/video/BV1Za4y1v7ra/?vd_source=e39e23ac5a7253752edc9b53b94c0c3d
6) How to setup Qt and openCV on Windows:https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows
7) Qt5.9.7中使用MinGW32编译OpenCV4.1.0过程https://blog.csdn.net/zhoufoxcn/article/details/103737848
8) OpenCV使用CMake和MinGW的编译安装及其在Qt配置运行https://blog.csdn.net/huihut/article/details/78701814
9) OpenCV使用CMake和MinGW-w64的编译安装https://blog.csdn.net/huihut/article/details/81317102
10) 【完美解决】OpenCVError: Insufficient memory (Failed to allocate xxx bytes) 报错的辛酸踩坑史https://blog.csdn.net/qq_52949697/article/details/123033368
11) opencv库不支持qt qt配置opencv出错https://blog.51cto.com/u_12192/10896803
12) minGW编译opencv4.1.0时 undefined reference to to cvv::view::MatchVIew
13) undefined reference to `cvv:::qtutil::ZoomableImage::updateArea(QRect,double)'之类的,后面还有很多与opencv的cvv模块有关的报错。解决办法参考:编译opencv 遇到undefined reference to `cvv::XX 错误:https://blog.csdn.net/panmengjiaa/article/details/114693766