Ubuntu安裝opencv 為調用gpu模塊


也真夠折騰的。

事件背景:為了一個光流的提取處理,本來是3.1的opencv在include一些模塊上出錯,原因是opencv3.0以上的版本對模塊進行了再分離,要contribute,但是contribute后還是解決不了,所以,選了2.4.11(因為之前在Windows下用過,知道哪些函數能調用).

這時在make的時候出現了類似nvcc warning : 的問題,然后就按照(http://blog.csdn.net/wang4959520/article/details/51392804)或者在cmake時加上參數-D BUILD_opencv_gpu=OFF,以為能成功了,可是又有 error: ‘NppiGraphcutState’ 類似的錯誤,這時,找到http://blog.csdn.net/caozhantao/article/details/51479172這篇博客,按它的說法,卸載2.4.11,改用2.4.13,在cmake的時候,用了

cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_gpu=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..

這下,都圓滿編譯通過了,而且nonfree等頭文件也能include成功了。

但是在調用gpu頭文件的時候又報錯說沒有#include <opencv2/gpu/gpu.hpp>,好吧,只能又重新編譯,又按照http://www.cnblogs.com/CarryPotMan/p/5377921.html這個博客重新對2.3.13編譯一遍,還是沒解決。

最后想到可能是cuda不支持,就決定卸掉2.4.12,用2.4.12,還是按這個博客,編譯,還是不行,好吧,結合了http://blog.csdn.net/xuezhisdc/article/details/48691797和http://blog.csdn.net/allyli0022/article/details/62859290來,用了:

CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=ON -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D CUDA_GENERATION=Fermi .. 

並且將graphcuts.cpp中

將 #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改為

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

最后就解決了gpu模塊調用的問題。

-----------------------------------------17年5月4號-------------------------------------------------

后來,又一次編譯,為了解決:

OpenCV Error: Gpu API call (invalid device function) in call_resize_linear_glob, file /home/dog/opencv-2.4.12/modules/gpu/src/cuda/resize.cu, line 233
terminate called after throwing an instance of 'cv::Exception'
what(): /home/dog/opencv-2.4.12/modules/gpu/src/cuda/resize.cu:233: error: (-217) invalid device function in function call_resize_linear_glob

Aborted (core dumped)

根據:https://github.com/opencv/opencv/issues/6580 和 https://github.com/opencv/opencv/issues/6577 最終確定用了:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DCUDA_CUDA_LIBRARY=/usr/local/cuda/lib64/stubs/libcuda.so -D CUDA_ARCH_BIN=5.2 -D CUDA_ARCH_PTX="" -D WITH_CUDA=ON -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_NVCUVID:BOOL="1" .

這里的5 2是這樣確定的:

根據:http://www.centoscn.com/CentOS/help/2015/0307/4816.html 用命令:

# nvidia-smi

得到我的GPU是:Tesla M40  

然后在:https://developer.nvidia.com/cuda-gpus  中查找,發現:

Tesla Data Center Products

GPU Compute Capability
Tesla P100 6.0
Tesla P40 6.1
Tesla P4 6.1
Tesla M60 5.2
Tesla M40 5.2
Tesla K80 3.7
Tesla K40 3.5
Tesla K20 3.5
Tesla K10 3.0

然后,就成功啦。

opencv最后還要:make -j8 和 sudo make install 不要忘了啊!

 


免責聲明!

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



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