1. 程式人生 > >Ubuntu16.04下安裝opencv2.4.9及若干問題解決方法

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的版本