opencv源码编译碰到的一堆坑(opencv4.2.0 + cuda11.5 + cmake3.21.5 + vs2019 + window11)
之前有编译过opencv,当时没有添加cuda模块,很轻松就成功了,这次添加完cuda后发现一直编译不成功。
一、下载opencv
https://opencv.org/releases/ 这里我下载的版本为4.2.0
二、下载opencv-contrib
https://gitee.com/opencv-lhd/opencv_contrib/tags 与下载的opencv版本对应
三、下载cmake
https://cmake.org/download/ 这里我下载的3.21.5
注意如果需要下载之前的版本下拉点这里即可
四、下载cuda
https://developer.nvidia.com/cuda-downloads 这里我下载的11.5版本
五、用cmake编译opencv
这里有很多写的比较好的博客可以参考: https://cloud.tencent.com/developer/article/1695383
首次编译会出现各种需要的下载的 ffmpeg ippicv等下载失败的情况,需要我们手动(FQ)下载,然后替换到
opencv4.2.0\sources\.cache\ffmpeg 等目录里的0kb的一些文件,这里不做赘述,可以参考:https://zhuanlan.zhihu.com/p/112788083
后面需要配置 OPENCV_EXTRA_MODULES_PATH
勾选 WITH_CUDA,如果要应用opencv的sift算法,则还需要将OPENCV_ENABLE_NONFREE勾选上
configure后再generate,如果没有报错就可以打开vs生成了
六、VS2019生成install
这里是我遇到的一个大坑,需要仔细看编译时的输出控制台的error(我当时没有仔细看导致一直没有发现错误)
如果发现 nvcc fatal : Unsupported gpu architecture ‘compute_30‘ 错误
那么恭喜你可以从我这里找到答案了,因为cuda 11已经废弃 compute_30了,所以需要把compute_30给去掉,那么要怎么去掉呢
我们需要重新回到cmake,找到CUDA_ARCH_BIN,需要把这里的3.0删掉之后再重新generate
之后重新打开项目,重新生成,就只剩下漫长的等待了(os: 添加gpu模块后编译的速度真的超级慢!)