centos 編譯opencv_4.2.0(dnn可以使用gpu)


git clone https://github.com/opencv/opencv.git
cd opencv-4.2.0/
mkdir build
cd build/
cmake  -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..

make -j8

 sudo make install


以上編譯的是cpu版本

下面開始編譯gpu版本

 

 

網上有很多。神馬opencv與opencv_contrib版本不匹配等。不匹配的話cmake會直接報錯。改了N次也不見好。后來干看錯誤直接改代碼得了

報錯位置:

//#include "opencv2/xfeatures2d/nonfree.hpp"

修改為:(自己按自己目錄來)

#  include "D:\\opencv_contrib-master\\modules\xfeatures2d\include\opencv2\xfeatures2d\nonfree.hpp"  (換成自己的路徑)


 

 

 

INCLUDE_DIRECTORIES("/home/opencv_ext/opencv_contrib/modules/xfeatures2d/include")

 

cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/home/cudnn_opencv_gpu -DWITH_TBB=ON -DWITH_V4L=ON -DWITH_OPENGL=ON -DWITH_CUDA=ON -DWITH_CUDNN=ON -D CUDA_ARCH_BIN=5.3,6.0,6.1,7.0,7.5 -DCUDA_ARCH_PTX=7.5  -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" -DWITH_CUBLAS=1 -DOPENCV_EXTRA_MODULES_PATH=/home/opencv_ext2/opencv_contrib/modules ..

 

INCLUDE_DIRECTORIES("/home/opencv_ext/opencv_contrib/modules/xfeatures2d/include")

 

編譯命令(需要先安裝好cuda ,cudnn,cudnn-devel等庫,庫文件太大,可與我聯系索要)

 cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/home/cudnn_opencv -DWITH_TBB=ON -DWITH_V4L=ON -DWITH_OPENGL=ON -DWITH_CUDA=ON -DWITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D CUDA_ARCH_BIN=6.0,6.1,7.0,7.5 -DCUDA_ARCH_PTX=7.5  -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" -DWITH_CUBLAS=1 -DOPENCV_EXTRA_MODULES_PATH=/home/opencv_ext2/opencv_contrib/modules ..

 

部分.i下載失敗需要手動下載

缺少文件的需要到opencv源碼目錄下找,復制到需要的位置,修改頭文件中的路徑

 

 

找不到libtbb.so.2

執行

 yum install libtbb*

使用opencv gpu

g++ /root/test_model.cpp -I/root/opencv_lib_gpu/include/opencv4/ -L/root/opencv_lib_gpu/lib64 -lopencv_highgui -lopencv_imgcodecs -lopencv_core -lopencv_video -lopencv_imgproc -lopencv_imgcodecs -lopencv_objdetect -lopencv_ml -lopencv_calib3d -lopencv_dnn -lopencv_features2d -lopencv_flann -lopencv_videoio -lopencv_photo -lopencv_cudev -lopencv_cudaimgproc  -lopencv_cudaarithm  -lm -ldl -lpthread -lrt -lssl -lcrypt -lcrypto -lz -lstdc++ -std=c++11  -o test_model

 

 

 

 

 

 

 

 

https://blog.csdn.net/lzhkui/article/details/107157175   nppi庫錯誤,更新cmake 3.17后正常

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.下載opencv源碼
    ​下載opencv代碼    下載地址 https://opencv.org/releases/     ,這個倉庫里是opencv核心模塊的代碼
下載opencv_contrib 代碼  下載地址  https://codeload.github.com/opencv/opencv_contrib/zip/refs/tags/4.2.0  ,這個倉庫里是opencv擴展模塊的代碼(主要是cuda和dnn模塊)
 
 
2.升級cmake
    wget https://cmake.org/files/v3.17/cmake-3.17.1.tar.gz
        tar -zxvf  cmake-3.17.1.tar.gz
    ​    ​cd cmake-3.17.1
    ​    ​./configure
    ​    ​make && make install
    ​    ​查看cmake版本   cmake -version
    ​    ​編譯時可能遇到找不到openssl的問題,執行yum -y install ncurses-devel,yum install openssl-devel
    ​    ​
 
3.安裝cuda cudnn cudnn-devel,cuda和cudnn,cudnn-devel的版本必須一致,下載地址https://developer.nvidia.com/
    安裝包位置   安裝包\雲晁\Centos\centos_tool\新顯卡驅動及不需聯網的cuda
    安裝cuda       執行./cuda_10.0.130_410.48_linux_tensorflow.run
    安裝cudnn     執行rpm -ivh libcudnn7-7.6.5.32-1.cuda10.0.x86_64_tensorflow.rpm
    安裝cudnn-devel 執行rpm -ivh libcudnn7-devel-7.6.5.32-1.cuda10.0.x86_64.rpm
    ​查看cuda版本    ​cat /usr/local/cuda/version.txt
    ​    ​
 
4.編譯opencv
    注意:​第一次編譯時需要聯網下載依賴,網絡環境比較差,可能需要下載很多次才行
    ​cd opencv-4.2.0
    ​mkdir build
    ​cd build
    ​ cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/root/ffmpeg/ld_lib/opencv4.2/opencv_4.2.0_gpu_install_dir -DWITH_TBB=ON -DWITH_V4L=ON -DWITH_OPENGL=ON -DWITH_CUDA=ON -DWITH_CUDNN=ON -D CUDA_ARCH_BIN=5.3,6.0,6.1,7.0,7.5 -DCUDA_ARCH_PTX=7.5  -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" -DWITH_CUBLAS=1 -DOPENCV_EXTRA_MODULES_PATH=/root/ffmpeg/ld_lib/opencv4.2/opencv_contrib-4.2.0/modules CMAKE_CXX_FLAGS="-std=c++11"  ..
    ​    ​別忘了改下面兩個編譯命令
    ​    ​-DCMAKE_INSTALL_PREFIX  指定安裝位置
    ​    ​ -DOPENCV_EXTRA_MODULES_PATH 指定opencv擴展庫路徑
 
 
    ​    ​cmake完了要看一下輸出有沒有檢測到cuda 和cudnn
 
 
 
 
     make -j 40 && make install
 
 
    ​5.編譯可能遇到的問題
    ​    ​1.某些.i文件找不到,解決方法,重新執行cmake命令下載
    ​    ​2. nppi庫找不到,使用opencv 4.1一下的版本 cuda版本9.0以上會出現這個問題,原因是cuda9.0的nppi庫拆分成了若干個庫,解決方法查考https://blog.csdn.net/u014015324/article/details/111195780
    ​    ​    ​還有一種可能時cmake版本過低,cmake查找cuda時會用到/usr/local/share/cmake-3.9/Modules/FindCUDA.cmake  ,這個FindCUDA.cmake 有問題,需要升級cmake解決
    ​3.編譯器可能中途退出,接着執行make即可
    ​    ​
    ​    ​
    ​
    ​
 

 

 
    
 
 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM