Ubuntu16.04下安裝opencv2.4.9及若干問題解決方法
1. 下載opencv2.4.9 安裝包
wget https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip
unzip解壓
2.安裝依賴
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
以及
sudo apt-get install cmake
sudo apt-get install pkg-config
3.進入解壓的opencv檔案,新建release資料夾
cd opencv_2.4.9
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local . .(有兩個點)
若報如下錯誤
[ 7%] Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o
arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘-m64’
CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):
Error generating
/home/yy/opencv-2.4.9/build/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o
make[2]: *** [ 錯誤 1
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] 錯誤 2
make: *** [all] 錯誤 2
輸入:cmake -D CMAKE_BUILD_TYPE=bulid -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
4.返回上級目錄
cd ..
cmake .
5.安裝
sudo make install
錯誤1.
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:135:18: error: ‘NppiGraphcutState’ does not name a type
operator NppiGraphcutState*()
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState’ does not name a type
NppiGraphcutState* pState;
解決:
找到/data/opencv-2.4.9/modules/gpu/src/graphcuts.cpp
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改為
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
錯誤2
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization
解決:
替換掉目錄/home/opencv-2.4.9/modules/gpu/src/nvidia/core下的
6.安裝完成後,動態庫共享
執行:sudo ldconfig -v之後執行sudo ldconfig
7.驗證pkg-config --modversion opencv顯示opencv的版本