Ubuntu opencv 多版本管理

版权声明:本文为博主原创文章,转载请联系作者 https://blog.csdn.net/u013832707/article/details/73498166

前言

系统Ubuntu14.04
已源码安装opencv3.2.0
现在需要安装opencv2.4.8

下载源码

进入opencv2.4.8的安装目录
执行如下命令:

git clone https://github.com/opencv/opencv
cd opencv
git checkout 2.4.8

编译安装

cd .. #回到安装目录
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv/2.4.8 -D CUDA_GENERATION=Kepler ../opencv/
make -j8 #多核编译
sudo make install

环境配置

首先使用命令

pkg-config --modversion opencv

当前输出为3.2.0
打开~/.bashrc文件,添加以下内容:

export PKG_CONFIG_PATH=/usr/local/opencv/2.4.8/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv/2.4.8/lib/

重新打开一个终端,再次查看opencv版本,可以看到改为了2.4.8

错误记录

错误一

    nvcc fatal   : Unsupported gpu architecture 'compute_11'  
    CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):  
      Error generating  
    /home/smie/Documents/opencv2.4.11/build/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_gene  

    rated_matrix_operations.cu.o  
    make[2]: ***  
    [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o] Error 1  
    make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs....  

解决办法,指明GPU的架构,一般的都为开普勒架构。也就是在cmake 命令添加:CUDA_GENERATION=Kepler

错误二

/home/ros05/opencv2.4.8/opencv/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(133): error: a storage class is not allowed in an explicit specialization

31 errors detected in the compilation of "/tmp/tmpxft_00005a7c_00000000-9_NCVPyramid.compute_35.cpp1.ii".
CMake Error at cuda_compile_generated_NCVPyramid.cu.o.cmake:266 (message):
  Error generating file
  /home/ros05/opencv2.4.8/release/modules/gpu/CMakeFiles/cuda_compile.dir/src/nvidia/core/./cuda_compile_generated_NCVPyramid.cu.o


make[2]: *** [modules/gpu/CMakeFiles/cuda_compile.dir/src/nvidia/core/./cuda_compile_generated_NCVPyramid.cu.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 71%] Built target opencv_perf_ocl
[ 74%] Built target opencv_test_ocl
make[1]: *** [modules/gpu/CMakeFiles/opencv_gpu.dir/all] Error 2
make: *** [all] Error 2

替换opencv/modules/gpu/src/nvidia/core中的NCVPixelOperations.hpp为http://download.csdn.net/detail/u013832707/9875570中文件

错误3

‘NppiGraphcutState’ does not name a type
         operator NppiGraphcutState*()
                  ^

在graphcuts.cpp中将

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

改为

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

猜你喜欢

转载自blog.csdn.net/u013832707/article/details/73498166