1. 程式人生 > >centos安裝opencv全過程

centos安裝opencv全過程

安裝opencv無數次,每次都還有新發現,今天記下來吧。

1、安裝依賴

yum install cmake gcc gcc-c++ gtk2-devel gimp-develgimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devellibpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-develjasper-devel jasper-utils swig python libtool nasm

2、下載檔案包

http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download


3、安裝

unzip opencv-2.4.9.zip

cd opencv-2.4.9

cmake CMakeLists.txt

make

make install

4、配置環境變數

vim ~/.bashrc

export OpenCV_DIR=$OpenCV_DIR:/root/opencv-2.4.9/include/opencv
export LD_LIBRARY_PATH="/root/opencv-2.4.9/3rdparty/lib:$LD_LIBRARY_PATH"

source ~/.bashrc

5、測試

cd samples

cd c

./build_all.sh

6、安裝結束

會出現的問題:

解決辦法:

開啟 sources\cmake 目錄,使用文字編輯器編輯OpenCVDetectCUDA.cmake

找到下面一段

  1. if(NOT DEFINED __cuda_arch_bin)  
  2.   if(ANDROID)  
  3.     set(__cuda_arch_bin "3.2")  
  4.     set(__cuda_arch_ptx "")  
  5.   else()  
  6.     if(${CUDA_VERSION} VERSION_LESS "5.0")  
  7.       set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")  
  8.     else()  
  9.       set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1 3.0 3.5")  
  10.     endif()  
  11.     set(__cuda_arch_ptx "3.0")  
  12.   endif()  
  13. endif()  

把第二個1.1  1.2  1.3  2.0 2.1  去掉,修改為
  1. if(NOT DEFINED __cuda_arch_bin)  
  2.   if(ANDROID)  
  3.     set(__cuda_arch_bin "3.2")  
  4.     set(__cuda_arch_ptx "")  
  5.   else()  
  6.     if(${CUDA_VERSION} VERSION_LESS "5.0")  
  7.       set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")  
  8.     else()  
  9.       set(__cuda_arch_bin "5.2 6.1")  
  10.     endif()  
  11.     set(__cuda_arch_ptx "3.0")  
  12.   endif()  
  13. endif()  

或者直接修改為使用於本機GTX1080 顯示卡的 6.1

重新make && make install

參考連線:http://blog.csdn.net/wishchin/article/details/64128067


2、 errors detected in the compilation of "/tmp/tmpxft_0001b798_00000000-11_NCVPyramid.compute_30.cpp

解決辦法:

將其中template宣告中的所有static全部刪除。可以使用vim的全域性替換,或者其他編輯工具全域性替換即可(template<> static inline 替換為template<> inline ):

參考連線:http://www.yanjiankang.cn/Linux-install-OpenCV-on-Ubuntu-or-Redhat/

解決辦法:

解決方案:需要修改一處原始碼:
在graphcuts.cpp中將
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) 
改為
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
參考連線:http://blog.csdn.net/allyli0022/article/details/62859290

4、測試的時候出現問題

解決辦法:將出錯的cpp中的show等在centos下無法執行的程式碼註釋掉,然後重新make && make install,在編譯測試指令碼