win10使用vs2019從原始碼編譯OpenCV4.5+cuda10.2+cudnn8.0的C++環境和Python環境
1 環境準備
1 vs2019
2 anaconda+Python3.6+numpy
3 cuda和cudnn環境
4 cmake
5 OpenCV4.5.0以及OpenCV-contrib4.5.0壓縮包
本人電腦裡的cuda和cudnn環境如下:
當然Python環境可以不用anaconda,自己去下載Python3.6安裝,然後裝上numpy模組,因為Python版本的OpenCV依賴於numpy。如果使用者僅僅需要編譯C++版本的OpenCV,可以去掉Python環境。
2 cmake編譯
將下載的OpenCV兩個壓縮包解壓
進入OpenCV4.5.0目錄下,新建一個資料夾build,作為cmake編譯檔案存放目錄。
開啟cmake,目錄選擇如下:
然後點選configure
點選完成
等待configure完成,在這個介面中進行如下更改:
將build_java勾選取消、build_tests勾選取消、with vtk勾選取消
勾選上這個OPENCV_ENABLE_NONFREE
勾選BUILD_opencv_world
然後新增contrib的目錄:
以上幾個選項就是C++編譯環境的設定,如果使用者不需要編譯Python版本,就可以到這一步。
接下來設定Python版本OpenCV的生成
對於cmake介面中有些選項如果沒有的話,需要手動新增Add Entry
新建BUILD_opencv_python3以及BUILD_opencv_python2
一個為true一個為false
然後根據自己的anaconda中Python和numpy的路徑來進行如下配置:
python.exe所在路徑:
PYTHON3_EXECUTABLE=G:/install/conda/envs/python368/python.exe
標頭檔案目錄:
PYTHON3_INCLUDE_DIR=G:/install/conda/envs/python368/include
Python的lib檔案路徑:
PYTHON3_LIBRARY=G:/install/conda/envs/python368/libs/python36.lib
numpy模組中標頭檔案目錄:
PYTHON3_NUMPY_INCLUDE_DIRS=G:/install/conda/envs/python368/Lib/site-packages/numpy/core/include
Python第三方模組所在目錄:
PYTHON3_PACKAGES_PATH=G:/install/conda/envs/python368/Lib/site-packages
到這一步Python的環境就配置好了,接下來配置GPU環境:
勾選上WITH_CUDA
由於沒有WITH_CUDNN,因此就手動新增
然後點選configure
這一次configure 完成後
上面還有一些紅色選項需要我們再次確認,因此接著再點選一次configure
這一次完成後所有選項全部變白了
然後我們點選生成generate
等待生成完成
vs2019編譯
在點選generate生成完成後,我們使用vs2019開啟這個工程
由於本人需要的是release版本的,因此將debug改為release
開啟了工程後我們先不要急於生成,先單獨執行這兩個工程看看是否會成功
在我的電腦裡執行時提示這個錯誤:unsupported Microsoft Visual Studio version!
這個是cuda的標頭檔案不支援vs2019這麼高的版本,我們開啟提示錯誤的這個host_config.h檔案,找到這個地方
因為1920對應的就是vs2017,vs2019的數字大於這個,所有就報錯,解決辦法是把這個1920改大些,這裡我改成2000
接下來可以右鍵ALL_BUILD->生成
生成成功然後就可以右鍵Install 生成動態庫和標頭檔案
至此GPU版本的OpenCV編譯完成。
那麼這個Python版本的OpenCV是否已經安裝了,實際上在點選install進行生成的時候,就已經把Python版本的OpenCV模組安裝到Python環境中去了。
不過通過這種方式安裝的Python版OpenCV通過pip list卻無法顯示出來,因為這個命令只能顯示通過pip安裝的模組,但是卻是可以使用的。
OpenCV4.5的C++GPU庫編譯好了,接下來在vs2019中呼叫測試下看GPU庫是否可以使用:
C++測試程式碼如下:
#include <iostream>
#include<opencv2/opencv.hpp>
int main(int argc, char* argv[])
{
cv::cuda::GpuMat img(400, 600, CV_8UC3, cv::Scalar(255, 0, 0));
cv::Mat cpuImg;
img.download(cpuImg);
cv::imshow("test", cpuImg);
cv::waitKey(0);
return 0;
}
執行成功,代表OpenCV環境編譯正確。
相關文章
- tomcat原始碼編譯和環境搭建Tomcat原始碼編譯
- lnmp環境安裝-原始碼編譯LNMP原始碼編譯
- Ubuntu環境編譯OpenJDK11原始碼Ubuntu編譯JDK原始碼
- grpc-java原始碼環境編譯RPCJava原始碼編譯
- 從零搭建LNMP環境(一) - 編譯原始碼安裝PHPLNMP編譯原始碼PHP
- Android 原始碼的下載和編譯環境的安裝及編譯Android原始碼編譯
- 初始化編譯環境 下載原始碼編譯原始碼
- Linux環境PostGIS原始碼編譯安裝Linux原始碼編譯
- openEuler arm 環境原始碼編譯mysql 8.0.37原始碼編譯MySql
- win10環境下fortran怎麼編譯_win10環境下fortran如何編譯Win10編譯
- Linux 開發環境 -- C/C++開發環境編譯安裝Linux開發環境C++編譯
- qgroundcontrol開發環境搭建原始碼編譯開發環境原始碼編譯
- [環境搭建] 透過原始碼編譯安裝 Redis原始碼編譯Redis
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- 打造自己的 Python 編碼環境Python
- 高通編譯環境搭建編譯
- openform環境搭建-編譯ORM編譯
- Linux下的C/C++編譯環境配置LinuxC++編譯
- CLion 配置 C C++ 編譯環境(MinGW)C++編譯
- 彙編環境下的原始碼除錯原始碼除錯
- 交叉編譯和交叉除錯環境搭建及使用編譯除錯
- linux環境下vscode 中C/C++編譯及除錯環境的搭建LinuxVSCodeC++編譯除錯
- centos下編譯lnmp環境CentOS編譯LNMP
- 編譯安裝LAMP環境編譯LAMP
- 編譯LAMP環境之PHP編譯LAMPPHP
- Android編譯環境搭建Android編譯
- Ubuntu交叉編譯環境配置Ubuntu編譯
- 編譯環境 Golang開發環境 vscode+git編譯Golang開發環境VSCodeGit
- CentOS 7.4 環境下原始碼編譯安裝 postgreSQL 11.4CentOS原始碼編譯SQL
- 15 款最好的 C/C++ 編譯器和整合開發環境C++編譯開發環境
- maven更改編譯環境的java版本Maven編譯Java
- java編譯環境的構建(轉)Java編譯
- 《UNIX環境高階程式設計》apue原始碼Ubuntu下的編譯程式設計原始碼Ubuntu編譯
- VLC在ubuntu環境下編譯編譯
- Milvus 編譯環境演進編譯
- Linux環境下, 原始碼編譯安裝詳解 (編譯CMake 3.15 和 gcc 5.3.0 為例)Linux原始碼編譯GC
- 使用pyenv和venv管理python環境Python
- CentOS 7.4 環境下原始碼編譯(多例項)安裝 Mysql 5.7.26CentOS原始碼編譯MySql