一、前期准备
1、软件版本与下载
| 名称 | 版本 | 下载链接 |
|---|---|---|
| opencv | ||
| opencv_contrib | ||
| cmake | 3.27.9 | |
| CUDA | ||
| cudnn | ||
| VS | ||
| Qt |
二、编译
1、配置编译器
2、编译选项:第一次Configure
2.0 CMAKE_BUILD_TYPE
2.1 BUILD_JAVA
在搜索框搜索java,查看配置编译java接口的选项,不用java可以取消勾选带java的选项:BUILD_JAVA、BUILD_opencv_java_bindings_generator等;我这里不用java所以全部取消勾选。
2.2 BUILD_opencv_python3
在搜索框搜索python,查看配置编译python接口的选项,不用python可以取消勾选带python的选项:BUILD_opencv_python3、BUILD_opencv_python_bindings_generator、BUILD_opencv_python_tests等
2.3 WITH_CUDA, WITH_OPENMP, WITH_TBB
在搜索框搜索cuda,查看配置cuda的选项,不用cuda可以取消勾选带cuda的选项:WITH_CUDA、BUILD_CUDA_STUBS、OPENCV_DNN_CUDA;我这里需要使用,所以全勾选。
2.4 OPENCV_EXTRA_MODULES_PATH
在搜索框搜索extra,OPENCV_EXTRA_MODULES_PATH项里输入拓展模块(opencv_contrib-4.x.x/modules)的路径
2.5 OPENCV_ENABLE_NONFREE
OPENCV_ENABLE_NONFREE是 OpenCV 配置中的一个选项,用于启用非自由(non-free)算法,这些算法可能受到专利保护或有其他限制。在 OpenCV 3.x 版本中,这些算法被移动到了opencv_contrib模块中。要启用这些算法,你需要在编译 OpenCV 时设置OPENCV_ENABLE_NONFREE选项为ON。
以下是启用非自由模块的一般步骤:
确保你已经下载了 OpenCV 的主仓库和 opencv_contrib 模块,并且它们是相同版本的。
使用 CMake 配置你的 OpenCV 构建。在 CMake 的配置界面中,你需要设置OPENCV_EXTRA_MODULES_PATH指向opencv_contrib模块的modules目录。
2.6 BUILD_opencv_world
在搜索框搜索world,勾选BUILD_opencv_world将会构建生成一个.dll(Lunix下是.so文件),而不会生成多个模块的.dll
2.7 BUILD_TEST
取消BUILD_TEST、BUILD_PERF_TESTS、INSTALL_TESTS等带有test关键词的选项,这些选项没有用,编译时还容易报错
2.8 OPENCV_FORCE_3RDPARTY_BUILD
设置OPENCV_FORCE_3RDPARTY_BUILD=ON时,OpenCV 会尝试构建所有需要的第三方库,即 OpenCV 源码文件夹下的opencv-4.10.0/3rdparty,而不是去查找系统中已经安装的版本。这可能会导致构建过程变慢,因为编译第三方库需要额外的时间。
通常系统安装的各种第三方软件库不一定匹配OpenCV的版本,所以建议勾选。
2.9 WITH_QT
WITH_QT是否使用 QT 对 OpenCV 的 GUI 进行编译;Windows 下默认启用WITH_WIN32UI,使用的是WinAPI的标准GUI API,Linux下是启用WITH_GTK。而使用Qt支持编译的OpenCV可以实现高级的h i g h g u i highguihighgui界面。
使用 Qt 要同时打开WITH_OPENGL
2.10 CMAKE_INSTALL_PREFIX
在搜索框搜索CMAKE_INSTALL_PREFIX,输入最终编译后动态库和头文件的存放目录,我这里是"E:/opencv/build/opencv_4.1.2/install"
2.11 点击Configure
点击Configure,等待绿色进度条完成。
2.12 注意
windows下填入的路径中要使用'/',而不能使用'\',否则会报错
3、编译选项:第二次Configure
在第一次Configure完成且无报错后,编译选项会根据你的勾选或多或少的增加,这些增加的编译选项需要检查与配置。
3.1 WITH_CUDA
如果需要使用cuda,在搜索框搜索cuda,查看配置cuda的选项。前文中我勾选了WITH_CUDA、BUILD_CUDA_STUBS、OPENCV_DNN_CUDA,此时出现了很多红色的带有CUDA_xxx,xxx_cudaxxx,CUDNN_xxx的配置选项,这些选项需要认真检查是否是你之前安装CUDA的路径;一般来说,你在系统变量中正确配置了CUDA的路径,cmake都会帮你找到。
其中,需要注意CUDA_ARCH_BIN这个选项。这个选项与你显卡的计算能力有关,一般cmake会把你显卡兼容的计算能力版本号都列出来,但并不是所有的版本都是你需要的。因为编译时opencv会把每个版本都编译一遍,这是非常耗时的,所以我们只用保留一个(或某几个)我们想要的版本号就行。