1. 编译环境
- Visual Studio 2022(VS 17);
- QT(MSVC 2019,X64,默认支持源码调试);
- CMake(3.29);
- OpenCV(4.9.0);
2. 编译配置(CMake)
BUILD_JAVA NO
BUILD_opencv_java NO
BUILD_opencv_java_bindings_generator NO
BUILD_opencv_python_bindings_generator NO
BUILD_opencv_python_tests NO
WITH_QT YES
Qt6_DIR C:/Qt/6.7.0/msvc2019_64/lib/cmake/Qt6
Qt6QmlTools_Dir C:/Qt/6.7.0/msvc2019_64/lib/cmake/Qt6QmlTools
WITH_VTK YES
VTK_DIR C:/VTK/VTK-9.3.0-release/lib/cmake/vtk-9.3
WITH_OPENGL YES
OPENCV_EXTRA_MODULES_PATH C:/OpenCV/opencv_contrib-4.9.0/modules
OPENCV_ENABLE_NONFREE YES
CMAKE_NSTALL_PREFIX C:/OpenCV/opencv-4.9.0-release
CMKAE_BUILD_TYPE release
BUILD_SHARED_LIBS YES
BUILD_opencv_world NO
说明:
BUILD_SHARED_LIBS设置为YES(即编译为动态库)时,BUILD_opencv_world建议设置为NO(多个动态库文件);
BUILD_SHARED_LIBS设置为NO(即编译为静态库)时,BUILD_opencv_world建议设置为YES(单个静态库文件);
OPENCV_ENABLE_ALLOCATOR_STATS NO
3. 编译安装
# 1. VS打开工程OpenCV.sln;
# 2. 菜单栏点击“生成---批生成”,对话框中选择项目"ALL_BUILD",保持编译配置为“Release x64”,点击按钮“生成”,编译代码;
# 3. 菜单栏点击“生成---批生成”,对话框中选择项目"INSTALL",保持编译配置为“Release x64”,点击按钮“生成”,安装程序;
4. 错误处理
- OpenCV三方软件下载失败(FFmpeg为例);
方式1:
1. 查看日志文件;
C:\OpenCV\opencv-4.9.0-build\CMakeDownloadLog.txt
2. 登录github,查找仓库opencv_3rdparty,手动下载失败的文件,注意核对版本和日期,有运气的成分;
https://github.com/opencv/opencv_3rdparty
3. 解压三方文件到缓存目录;
C:\OpenCV\opencv-4.9.0\.cache\ffmpeg
4. 对比下载文件与缓存文件的哈希值;
certutil -hashfile ffmpeg_version.cmake MD5
5. 删除缓存中的空文件,重命名下载文件,文件名格式为:MD5-文件名;
3b90f67f4b429e77d3da36698cef700c-ffmpeg_version.cmake
55c25bbc13e4a12d4339b70d3b76987f-opencv_ffmpeg.dll
67caee9231c6843483b4de9815d6526e-opencv_ffmpeg_64.dll
方式2:
1. 查看日志文件;
C:\OpenCV\opencv-4.9.0-build\CMakeDownloadLog.txt
2. 查看缓存路径;
C:\OpenCV\opencv-4.9.0\.cache
3. 百度网盘离线下载;
根据缓存路径中的空文件,在日志中查询其下载地址,然后利用百度网盘离线下载功能,进行下载;
4. 下载文件拷贝到缓存目录;
C:\OpenCV\opencv-4.9.0-code\.cache\ffmpeg
5. 删除缓存中的空文件,重命名下载文件,文件名格式为:MD5-文件名;
3b90f67f4b429e77d3da36698cef700c-ffmpeg_version.cmake
55c25bbc13e4a12d4339b70d3b76987f-opencv_ffmpeg.dll
67caee9231c6843483b4de9815d6526e-opencv_ffmpeg_64.dll
5. 其他备注
- MD5计算方式;
方式1:Git Bash
md5sum.exe ffmpeg_version.cmake
方式2:CMD
certutil -hashfile ffmpeg_version.cmake MD5