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模块后编译的速度真的超级慢!)

 

posted @ 2022-02-26 15:44  也许没资格  阅读(1569)  评论(0编辑  收藏  举报