1. 编译环境
- JDK(11,可选);
- Python(3.7.6,可选);
- QT(MinGW,5.13.2,默认支持源码调试);
- VTK(8.2,编译安装,可选);
- CMake(3.14);
- OpenCV(3.4.16);
2. 编译配置(CMake)
BUILD_JAVA YES
BUILD_opencv_python3 YES
BUILD_opencv_python_bindings_generator YES
BUILD_opencv_python_tests YES
PYTHON3_NUMPY_INCLUDE_DIRS python -c "import numpy; print(numpy.get_include())"
OPENCV_GENERATE_SETUPVARS NO
WITH_QT YES
Qt5_DIR C:\Qt\Qt5.13.2\5.13.2\mingw73_64\lib\cmake\Qt5
QT_QMAKE_EXECUTABLE C:/Qt/Qt5.13.2/5.13.2/mingw73_64/bin/qmake.exe
WITH_VTK YES
VTK_DIR C:/VTK/vtk-8.2.0/lib/cmake/vtk-8.2
WITH_OPENGL YES
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. 编译安装
# 编译代码;
PS:C:\OpenCV\build> mingw32-make.exe -j4
# 安装程序;
PS:C:\OpenCV\build> mingw32-make.exe install
4. 错误处理
- OpenCV三方软件下载失败(FFmpeg为例);
方式1:
1. 查看日志文件;
C:\OpenCV\opencv-3.4.16-build\CMakeDownloadLog.txt
2. 登录github,查找仓库opencv_3rdparty,手动下载失败的文件,注意核对版本和日期,有运气的成分;
https://github.com/opencv/opencv_3rdparty
3. 解压三方文件到缓存目录;
C:\OpenCV\opencv-3.4.16-code\.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-3.4.16-build\CMakeDownloadLog.txt
2. 查看缓存路径;
C:\OpenCV\opencv-3.4.16-code\.cache
3. 百度网盘离线下载;
根据缓存路径中的空文件,在日志中查询其下载地址,然后利用百度网盘离线下载功能,进行下载;
4. 下载文件拷贝到缓存目录;
C:\OpenCV\opencv-3.4.16-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