OpenCV配置CUDA以支持GPU加速
一、環(huán)境準(zhǔn)備
- 查看電腦NVIDIA的CUDA版本號(hào),下載對(duì)應(yīng)版本CUDA Toolkit(當(dāng)前使用11.1版本)(具體需不需要下載和自己電腦cuda相同版本的還有待查證)
- cmake3.17.2(最高只支持到vs2019版)
- visual studio 2019
- opencv源代碼(當(dāng)前使用opencv 4.6.0版本)
- opencv_contrib(當(dāng)前使用4.6.0版本)
以上相應(yīng)下載鏈接及軟件會(huì)放在資料里。CUDA精簡(jiǎn)安裝教程請(qǐng)關(guān)注補(bǔ)充內(nèi)容
二、使用cmake “make”
1、打開(kāi)cmake(cmake-gui),第一個(gè)源代碼路徑選擇剛剛下載的opencv源代碼路徑,路徑需要選擇到sources
第二個(gè)編譯輸出路徑,可在opencv文件夾下創(chuàng)建一個(gè)新的文件夾,用于存放編譯輸出的文件,這里創(chuàng)建為newbuild。之后點(diǎn)configure進(jìn)行第一次配置,彈出窗口第一個(gè)選擇visual studio 16 2019,第二個(gè)選擇x64,其余保持默認(rèn),點(diǎn)擊finish,等待配置完成后不出意外會(huì)有3個(gè)錯(cuò)誤和警告,需要重點(diǎn)關(guān)注,這些錯(cuò)誤會(huì)影響到后面的編譯。
我的錯(cuò)誤為
(1)跟python2.7相關(guān)的錯(cuò)誤,可忽略(2)FFMPEG的相關(guān)文件下載失敗,這里需要自己從自己選擇的編譯輸出路徑中找到 CMakeDownloadLog.txt 打開(kāi)(我的路徑為H:\opencv_pasks\opencv\newbuild\CMakeDownloadLog.txt),里面提供了FFMPEG相關(guān)文件的鏈接地址,下載即可。最后我們統(tǒng)一放入相關(guān)文件夾內(nèi)(所以這里只需先下載下來(lái),暫不用放入任何文件夾內(nèi))
(3)這里只是個(gè) warning 不是 error ,可忽略
(當(dāng)然有的人可能還會(huì)有和 ippicv 相關(guān)的錯(cuò)誤,和 ffmpeg 同理,找到對(duì)應(yīng)的文件鏈接下載即可)
2、勾選相應(yīng)配置
(1)在 search 搜索框里搜索 cuda,勾選 OPENCV_DNN_CUDA 和 WITH_CUDA 兩個(gè)選項(xiàng)
(2)搜索 example,勾選 BUILD_EXAMPLES 和 INSTALL_PYTHON_EXAMPLES(這一步可不用)
(3)搜索 non,勾選OPENCV_ENABLE_NONFREE
(4)搜索 mod,OPENCV_EXTRA_MODULES_PATH 選擇剛剛下載的 opencv_contrib 路徑,需要到 modules 文件夾下(我的為H:/opencv_pasks/opencv_contrib-4.6.0/modules, 注意這里是正斜杠而不是反斜杠)
以上完成之后再次點(diǎn)擊 configure 進(jìn)行第二次配置,等待配置完成后可繼續(xù)下一步。
這里不出意外會(huì)多出幾個(gè)紅色的錯(cuò)誤警告
例如:wechat_qrcode、xfeatures2d、face相關(guān)等,基本都是因?yàn)橄螺d不到文件引起,需要自己手動(dòng)下載(5)搜索 cudnn,勾選 WITH_CUDNN(我的默認(rèn)已經(jīng)勾選)
(6)搜索 cubla,勾選WITH_CUBLAS(我的默認(rèn)已經(jīng)勾選)(7)搜索 cuda_ar,在CUDA_ARCH_BIN填入自己的顯卡gpu算力,不知道的可進(jìn)入****查詢,我的為6.1。
(顯卡gpu算力查詢****見(jiàn)資料)(8)搜索 fast,勾選CUDA_FAST_MATH 和 ENABLE_FAST_MAT(9)搜索 type,將CMAKE_CONFIGURATION_TYPES的DEBUG刪除,只保留Release(10)搜索 world,勾選BUILD_opencv_world完成上述后再次點(diǎn)擊 configure 進(jìn)行第三次配置,等待配置完成后,這時(shí)我們需要放入剛剛所說(shuō)的一些下載錯(cuò)誤的缺失文件。 在源碼目錄下的 .cache 文件夾內(nèi)(我的路徑為 H:\opencv_pasks\opencv\sources.cache)放入剛剛下載的相應(yīng)文件,需要放入到對(duì)應(yīng)的文件夾下,并且文件名需要和自己目錄下生成的 0k 文件名相對(duì)應(yīng),不對(duì)應(yīng)的需要修改成對(duì)應(yīng)的,然后將其替換。(不會(huì)的可以參考我的 .ceche 目錄,同時(shí)如果有文件下載不了的可以使用我文件里的) 替換完剛剛出錯(cuò)的所有文件后,回到 cmake,點(diǎn)擊 Generate 會(huì)生成一個(gè)vs2019的c++工程,之后點(diǎn)擊 open Project 打開(kāi)工程。 在 vs2019 上方選擇 Release,之后點(diǎn)右邊的 CmakeTargets-ALL_BUILD,右鍵生成,等待生成完成,過(guò)程大約一小時(shí)到兩小時(shí),根據(jù)自己電腦的 cpu 而定。生成完會(huì)出現(xiàn)0錯(cuò)誤、0跳過(guò),全是成功的,之后還是同樣在 ALL_BUILD 下方的 INSTALL,同樣右鍵生成,過(guò)程大約幾分鐘,等待生成完成即可。
三、配置環(huán)境變量
此電腦右鍵-屬性-高級(jí)系統(tǒng)設(shè)置-高級(jí)-環(huán)境變量在上方的用戶變量中新建兩個(gè)變量
在下方的系統(tǒng)變量-Path中新建三個(gè)變量,配置完后確定即可
四、測(cè)試
在代碼中,需要對(duì)net類進(jìn)行兩處修改net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)之后運(yùn)行即可支持GPU加速。來(lái)源: 小半仙IoT
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。