天津建設(shè)工程新希望seo權(quán)重是什么意思
【opencv】windows10下opencv4.8.0-cuda C++版本源碼編譯教程
提示:博主取舍了很多大佬的博文并親測有效,分享筆記邀大家共同學(xué)習(xí)討論
文章目錄
- 【opencv】windows10下opencv4.8.0-cuda C++版本源碼編譯教程
- 前言
- 準(zhǔn)備工具
- cuda/cudnn
- cmake
- opencv4.8.0
- opencv_contrib
- CMake編譯
- VS2019編譯
- 可能出現(xiàn)的問題
- cmake編譯過程中可能出現(xiàn)的問題
- VS2019編譯過程中可能出現(xiàn)的問題
- 測試使用GPU
- 總結(jié)
前言
OpenCV是一個開源的計(jì)算機(jī)視覺庫,包含了核心模塊和擴(kuò)展模塊,提供了基礎(chǔ)的圖像處理和計(jì)算機(jī)視覺算法,以及一些機(jī)器學(xué)習(xí)工具。而OpenCV Contrib是OpenCV社區(qū)貢獻(xiàn)的一組擴(kuò)展模塊之一,包含了一些較為新穎和實(shí)用的算法和工具函數(shù),提供了一些高級的圖像處理和計(jì)算機(jī)視覺算法。這些功能和算法可能不適合所有用戶或者還處于實(shí)驗(yàn)性階段。OpenCV Contrib模塊中的代碼由社區(qū)貢獻(xiàn)者開發(fā)和維護(hù),它們提供了一些在OpenCV核心庫中尚未包含的新特性和實(shí)驗(yàn)性功能。
準(zhǔn)備工具
cmake、vs2019、opencv4.8.0、opencv_contrib-4.8.0、cuda、cudnn
cuda/cudnn
安裝cuda、cudnn可以參考此前博主的【深度學(xué)習(xí)windows10環(huán)境配置詳細(xì)教程】,因?yàn)閷τ谛率謥碚f,需要注意的細(xì)節(jié)比較多,這里不浪費(fèi)篇幅重復(fù)講述了。
cmake
CMake官方下載地址,下載cmake-3.27.7-windows-x86_64.msi。
添加到環(huán)境和安裝路徑博主根據(jù)自身情況作出了修改,其他都是默認(rèn)安裝。
出現(xiàn)以下界面安裝成功。
opencv4.8.0
Opencv官方下載地址,下載OpenCV – 4.8.0 Sources,下載解壓opencv-4.8.0.zip。
opencv_contrib
opencv_contrib官方下載地址,選擇opencv對應(yīng)的contrib版本,例如opencv4.8.0對應(yīng)就是opencv_contrib-4.8.0.zip。下載后直接解壓。
CMake編譯
- 打開CMake,where is the source code是Opencv sources(博主是opencv-4.8.0)的文件夾位置,where to build the binaries是編譯opencv保存的文件夾位置(自定義),在左下角第一次點(diǎn)擊Configure。
- 選擇對應(yīng)vs的版本(博主是vs2019),系統(tǒng)選擇x64,最后點(diǎn)右下角Finish。
- 顯示Configuring done后,在Search搜索框搜索帶cuda的關(guān)鍵字,全部勾選。
- Search搜索框搜索OPENCV_EXTRA_MODULES_PATH,添加解壓的opencv_contrib中的modules的路徑,再搜索并勾選OPENCV_ENABLE_NONFREE選項(xiàng)。
- 將build_opencv_world選上,這可以將所有opencv的庫都編譯在一起,不需要自己手動選擇添加每個小模塊,但是具體的工程又不建議這種全家桶。
- 對于python、java、js、tests相關(guān)選項(xiàng)的選擇,用Search搜索框分別搜索“python”,“java”,“js”,“tests”,根據(jù)需要選中和取消相關(guān)選項(xiàng),默認(rèn)都是選中,博主按默認(rèn)都選上了,第二次點(diǎn)擊Configure。
- 顯示Configuring done后,將CUDA_ARCH_BIN顯卡算力內(nèi)容改成自己顯卡的算力。官網(wǎng)查看顯卡算力地址,刪除小于自己顯卡算力的部分,再搜索并勾選ENABLE_FAST_MATH選項(xiàng),第三次點(diǎn)擊Configure。
- 顯示Configuring done后,點(diǎn)擊generate,顯示generating done,成功完成cmake編譯,在輸出的opencv保存文件夾位置中存在就生成了OpenCV.sln文件。
cmake編譯過程是會從githup上下載數(shù)據(jù),但是一般都會出現(xiàn)下載失敗的情況,這里建議讀者先跳到【可能出現(xiàn)的問題】這一小節(jié),來確認(rèn)是不是自己也出現(xiàn)了下載失敗的情況。
VS2019編譯
- 使用VS2019 (以管理員方式運(yùn)行) 打開剛剛編譯工程OpenCV.sln,在release|x64模式下,在解決方案資源管理器—>CMakeTargets—>右鍵點(diǎn)擊ALL_BUILD–>生成。
- 同樣在release|x64模式下,在解決方案資源管理器—>CMakeTargets—>右鍵點(diǎn)擊INSTALL–>生成。
編譯完成后在where to build the binaries位置的install文件夾內(nèi)生成以下內(nèi)容。
可能出現(xiàn)的問題
cmake編譯過程中可能出現(xiàn)的問題
cmake編譯出現(xiàn)Download failed的問題。
在where to build the binaries位置里面有個CMakeDownloadLog.txt,將里面下載鏈接復(fù)制到瀏覽器進(jìn)行下載,
將其和where is the source code里面的.cache文件夾里面內(nèi)容相對應(yīng),下圖是下載失敗時候,文件大小是0KB,手動下載完成后進(jìn)行替換。
注意用來替換的文件的名稱要與對應(yīng)空文件的名稱保持一致。
對于部分文件則需要將網(wǎng)頁以另存為的方式進(jìn)行替換,注意一定不要以復(fù)制網(wǎng)頁內(nèi)容粘貼到空文件的方式進(jìn)行替換,這是無效的的。
將整個.cache都用同樣的方式進(jìn)行處理。
強(qiáng)調(diào)一點(diǎn),出現(xiàn)這種問題,可以暫時先走完CMake編譯過程,因?yàn)槊恳淮蜟onfiguring都會有新的下載內(nèi)容,然后再一次性將.cache的內(nèi)容進(jìn)行完整的替換,最后進(jìn)行Configuring和Generate。
VS2019編譯過程中可能出現(xiàn)的問題
通常是對于部分資源,vs2019沒有管理員操作權(quán)限,因此只需要用管理員身份重新打開進(jìn)行操作即可。
測試使用GPU
這里用一段簡單的c++代碼驗(yàn)證安裝完成的opencv是否支持gpu設(shè)備。
#include <opencv2/opencv.hpp>
#include <opencv2/core/cuda.hpp>
int main() {// 檢查是否支持CUDAif (cv::cuda::getCudaEnabledDeviceCount()) {std::cout << "檢測到支持CUDA的設(shè)備數(shù)量" << cv::cuda::getCudaEnabledDeviceCount() <<std::endl;}else {std::cout << "未檢測到支持CUDA的設(shè)備" << std::endl;}return 0;
}
驗(yàn)證成功,oepncv-cuda版本源碼編譯成功。
總結(jié)
盡可能簡單、詳細(xì)的介紹windows10下opencv4.8.0-cuda版本用源碼進(jìn)行編譯的詳細(xì)流程。