编译前的一些准备
一、前期准备下载CMake以及VS
CMake链接:https://cmake.org/download/
VS链接:https://visualstudio.microsoft.com/zh-hans/vs/
过程简单这里不多做赘述
二、下载opencv源码以及opencv_contrib源码
注意!下载的opencv以及opencv_contrib版本号需一致
下载好直接解压到自己指定的位置,得到两个文件夹opencv-4.9.0和opencv_contrib-4.9.0
在opencv-4.9.0里面创建一个build文件夹
CMake编译会碰到的一些问题
在编译过程中在信息窗口会时不时出现一些红色的字,比如:
CMake Warning at cmake/OpenCVDownload.cmake:248 (message):IPPICV: Download failed: 6;"Couldn't resolve host name"
For details please refer to the download log file:
D:/opencv/opencv-4.9.0/opencv-4.9.0/build/CMakeDownloadLog.txt
Call Stack (most recent call first):3rdparty/ippicv/ippicv.cmake:37 (ocv_download) cmake/OpenCVFindIPP.cmake:259 (download_ippicv)cmake/OpenCVFindLibsPerf.cmake:12 (include) CMakeLists.txt:812 (include)
这些是因为网络问题无法下载导致的,这也会导致后期使用VS编译时候出现报错
如果有遇到可以跳转至:解决CMake编译opencv时ffmpeg为NO问题
CMake编译
打开CMake,红框放解压出来的opencv-4.9.0的路径,蓝框放刚刚创建的build路径
点击Configure,跳出下面这个窗口按我这样配置然后点击Finish
等待配置之后会出现一大堆红色信息
搜索框搜索PYTHON3,Value的值是你python的路径,我这边用的是anaconda3创建的虚拟环境
PYTHON3_NUMPY_INCLUDE_DIRS的路径是numpy库的路径,我的路径为:
E:/anaconda3/envs/factory/Lib/site-packages/numpy/core/include
再次点击Configure
再搜索modules,选择opencv_contrib-4.9.0下面的modules路径
再次点击Configure
Configure完成后搜索栏搜cuda,全部打勾,然后继续Configure
等待结束后继续搜索OPENCV_DNN_CUDA、WITH_CUDA 、ENABLE_FAST_MATH
三个全部打钩,再次Configure
接着搜索
UILD_opencv_python3
OPENCV_ENABLE_NONFREE
BUILD_opencv_world
全部打勾
这边要注意:BUILD_opencv_python3是必须打勾的,如果搜索不到的话那回到前面的步骤一步一步看着重新来,不然到后面VS编译的时候会有问题
接着Configure
完成后搜索CUDA_ARCH_BIN填写自己显卡的算力
查询链接:https://developer.nvidia.com/cuda-gpus
我的是2060显卡所以是7.5
CUDA_FAST_MATH也打勾,加快运算
最后一次点击Configure等待出现Configuring done字眼之后点击Generate,完成后如下图
VS编译
点击Open Project应该会自动打开VS,如果没有自动打开的可以打开前面创建的build的路径,直接双击OpenCV.sln即可打开VS
将Debug模式改为Release
查看解决方案,点击打开bindings里面有一个opencv_python3,右键点击属性,如下图点击编辑
勾选从父级或项目默认设置继承后点击确定
打开CMakeTargets里面有一个ALL_BUILD,右键-->生成
进入漫长的等待
结果大概长这样,只要没有报错就可以了
最后一步!解决方案中选中INSTALL--右键--生成,等待完成结果和上图一样,没报错就成功了
最后测试一下
import cv2
print(cv2.cuda.getCudaEnabledDeviceCount())
输出不是0就编译成功啦!