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
找到下面一段
- if(NOT DEFINED __cuda_arch_bin)
- if(ANDROID)
- set(__cuda_arch_bin "3.2")
- set(__cuda_arch_ptx "")
- else()
- if(${CUDA_VERSION} VERSION_LESS "5.0")
- set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")
-
else()
- set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1 3.0 3.5")
- endif()
- set(__cuda_arch_ptx "3.0")
- endif()
- endif()
把第二個1.1 1.2 1.3 2.0 2.1 去掉,修改為
- if(NOT DEFINED __cuda_arch_bin)
- if(ANDROID)
- set(__cuda_arch_bin "3.2")
- set(__cuda_arch_ptx "")
- else()
- if(${CUDA_VERSION} VERSION_LESS "5.0")
- set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")
- else()
- set(__cuda_arch_bin "5.2 6.1")
- endif()
- set(__cuda_arch_ptx "3.0")
- endif()
- 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,在編譯測試指令碼