之前有編譯過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模塊后編譯的速度真的超級慢!)