OpenCV cuda 版本編譯使用
1. 說(shuō)明
opencv 默認(rèn)提供的動(dòng)態(tài)鏈接庫(kù)是不支持 cuda 加速的。需要我們自己編譯。
本文記錄一下編譯 opencv cuda 版本的流程,并同步在個(gè)人站點(diǎn)。
2. 準(zhǔn)備工具
OpenCV?cuda 版本的編譯需要各種工具版本相互配合。建議選擇新版本的 OpenCV 和 CMake。
CMake 3.18
CUDA Toolkit 11
VIstual Studio 2022
OpenCV 3.4.15?& OpenCV_contrib
3. 編譯流程
3.1 CUDA
安裝 CUDA11 和 對(duì)應(yīng)的 CUDNN,并配置環(huán)境變量。過(guò)程和配置 tensorflow gpu 版本相同。
3.2 CMake
將OpenCV_contrib 3.4.15?和 OpenCV 3.4.15?分別解壓到某處。打開(kāi) CMake-gui 設(shè)置源碼目錄和目標(biāo)目錄。點(diǎn)擊“Configure”按鈕。
打開(kāi) CMake-gui 工具,填入 OpenCV 解壓的源碼目錄和 build 目錄。點(diǎn)擊 configure,

生成的選項(xiàng)中,勾選/取消勾選相關(guān)內(nèi)容:
打開(kāi) WITH_TBB
勾選和 CUDA 相關(guān)選項(xiàng)

取消選擇 java 和 python 的編譯選項(xiàng)(個(gè)人不需要)
勾選 nonfree 的編譯選項(xiàng)
取消 TEST 相關(guān)選項(xiàng)加快編譯速度
勾選 BUILD_opencv_world 最終只生成一個(gè)動(dòng)態(tài)鏈接庫(kù)方便使用
在 OPENCV_EXTRA_MODULES_PATH 中填入 OpenCV_contrib 解壓文件夾 modules 的路徑

取消選擇 OPENCV_GENERATE_SETUPVARS
再次點(diǎn)擊 configure 按鈕,由于網(wǎng)絡(luò)問(wèn)題會(huì)出現(xiàn)無(wú)法下載的錯(cuò)誤,可以取消勾選 face 模塊,然后再次點(diǎn)擊 configure 按鈕。要保證生成 CMakeLists.txt 過(guò)程中不出現(xiàn)紅色警告,不然后續(xù)的編譯過(guò)程會(huì)出現(xiàn)錯(cuò)誤。無(wú)錯(cuò)誤后點(diǎn)擊 Generate 按鈕,生成項(xiàng)目文件?Opencv.sln 。
3.3?VS2022
打開(kāi)生成的 OpenCV.sln 文件,找到項(xiàng)目 ALL_BUILD,分別在 Debug 和 Release 下右擊生成。編譯大概需要六個(gè)小時(shí)(等死個(gè)人)。
ALL_BUILD 完成后,找到項(xiàng)目 INSTALL 右擊生成。最終會(huì)在當(dāng)前 build 目錄下生成一個(gè) install 目錄,這就是我們需要的可執(zhí)行文件和庫(kù),最后添加到環(huán)境變量中測(cè)試效果。
也可以使用 Vistual Studio 的批量生成功能。?

4. 使用
將 install 目錄的動(dòng)態(tài)鏈接庫(kù)添加到環(huán)境變量中,這里推薦一個(gè)環(huán)境變量管理工具?rapid environment editor,非常好用。

bin 文件在 install/x64/vc16 中:

打開(kāi)項(xiàng)目屬性 VC++ 目錄
包含目錄

庫(kù)目錄

在 鏈接器 --> 輸入 --> 附加依賴項(xiàng) 中,分別在 debug 和 release 模式下添加?opencv_world3415d.lib、opencv_world3415.lib。至此配置完畢。
添加頭文件,即可開(kāi)始使用 cuda?
參考
1. [Win10使用VS2019從源碼編譯OpenCV 4.4 + CUDA 11.0 + Cudnn 8.0 + python3](https://www.jianshu.com/p/aa8455fcc672)
2.?OpenCV + CUDA開(kāi)發(fā) - 編譯與環(huán)境配置