caffe配置之opencv2.4.9和配置Makefile.config

7、安装opencv2.4.9
    这个地方坑也不少,用Python写代码用于图像处理时,常常要和opencv结合起来,所以需要安装opencv,我这里用的版本是2.4.9,Python版本是2.7。
    (1) 下载 opencv 源码。
    (2) 解压到任意目录
    unzip opencv-2.4.9.zip
    (3) 进入源码目录,创建release目录(或者 build 目录都行)
    cd opencv-2.4.9
    mkdir release
    (4) 可以看到在OpenCV目录下,有个CMakeLists.txt文件,这是用于编译opencv源码的,编译之前需要需要事先安装一些软件
    sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
    (5) 进入release目录,安装OpenCV是所有的文件都会被放到这个release目录下
    cd release
    (6) 用cmake编译OpenCV源码,安装所有的lib文件都会被安装到/usr/local目录下
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
    make -j4  (-j4表示使用4个线程编译,可以大大加快编译速度)
    sudo make install
    这个地方,可能会遇到一些问题,如果啥事没发生,那真是太幸运了。
    a、第一个错误
    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]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o] 错误 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 ..”,即可解决!
    b、第二个错误
    因为我的电脑安装了GPU卡,因此OpenCV会自动编译CUDA相关的代码,可以直接关掉( 在cmake时加上-D WITH_CUDA=OFF ),
    但我需要编译。因此默认是打开的,因此在make时遇到以下错误:a storage class is not allowed in an explicit specialization。
    解决办法:
    打开错误的文件:
    vim /root/opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp,
    将其中template声明中的所有static全部删除。可以使用vim的全局替换,或者其他编辑工具全局替换即可(template<> static inline 替换为template<> inline ):
    在命令行下输入:%s/template<> static inline/template<> inline/g。
    最后重新执行以上命令。
    (7) 环境变量修改
    在/etc/ld.so.conf 文件中添加 /usr/local/lib , 然后执行:
    sudo ldconfig -v
    为程序指定openvc的头文件位置, 使用pkg-config命令来完成。首先在 /etc/profile 中添加:
    export  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    然后source生效:
    source /etc/profile
    再执行以下命令可以打印opencv的配置信息:
    pkg-config --libs opencv
    (8) 把Python与opencv建立连接
    编译安装好后的cv2.so,也就是python调用openc所需要的库,放在/usr/local/lib/python2.7/site-packages
    这个目录下,我们可以将这个目录添加到环境变量
    export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
    这样便可以在python中 import cv2。
    (9) 测试
    在解压的opencv目录下找到 samples/c/build_all.sh,运行该文件:
    cd /root/opencv-2.4.8/samples/c/
    chmod a+x build_all.sh
    ./build_all.sh
    在这里又遇到一个问题
    /usr/bin/ld: cannot find -lcufft
    /usr/bin/ld: cannot find -lnpps
    /usr/bin/ld: cannot find -lnppi
    /usr/bin/ld: cannot find -lnppc
    /usr/bin/ld: cannot find -lcudart
    去网上找了许多解决/usr/bin/ld: cannot find -lxxx问题的资料,但是都没有解决。
    不过看到一些材料中说libcufft,libnpps,libnppi,libnppc,libcudart是cuda的库(cuda和opencv是有仇吧...),搜索/usr/local/cuda-7.0/lib64,
    果然发现了libcufft.so.7.0,libnpps.so.7.0,libnppi.so.7.0,libnppc.so.7.0,libcudarts.so.7.0,
    既然报错说是/usr/bin/ld: cannot find -lcufft,那是不是因为/usr/local/lib下面没有libcufft.so.7.0,libnpps.so.7.0,libnppi.so.7.0,
    libnppc.so.7.0,libcudarts.so.7.0的软连接?
    于是分别对上面几个文件建立软连接 sudo ln -s /usr/local/cuda-7.0/lib64/libcufft.so.7.0 /usr/local/lib/libcufft.so  
    再次进入opencv目录/samples/c/ 运行./build_all.sh 问题解决,不会再报错,然后运行./find_obj 会出现无比nice的测试结果。
    {
        参考:
        http://www.yanjiankang.cn/linux-install-opencv-on-ubuntu-or-redhat/
        http://blog.csdn.net/gongxs7/article/details/49131201
        http://blog.csdn.net/dyx810601/article/details/51579273
        http://blog.csdn.net/llp1992/article/details/50066983
    }
8、配置Makefile.config(参考:http://blog.csdn.net/autocyz/article/details/51783857)
    折腾到这一步,离成功就不远了,接下来就是配置之前搁置的Makefile.config,进入caffe根目录,使用vim编辑器打开Makefile.config。
    在打开的Makefile.config修改如下内容(我自己的配置):
    USE_OPENCV := 1
    USE_LEVELDB := 1
    USE_LMDB := 1
    CUSTOM_CXX := g++
    CUDA_DIR := /usr/local/cuda-7.5
    CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
        -gencode arch=compute_20,code=sm_21 \
        -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_50,code=compute_50
    BLAS := atlas
    MATLAB_DIR := /home/eric/MATLAB2014/R2014a
    PYTHON_INCLUDE := /usr/include/python2.7 \
        /usr/lib/python2.7/dist-packages/numpy/core/include
    PYTHON_LIB := /usr/local/lib
    WITH_PYTHON_LAYER := 1
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
    LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
    BUILD_DIR := build
    DISTRIBUTE_DIR := distribute
9、make所有文件
    进入caffe根目录,输入如下命令:
    sudo make clean
    sudo make all -j4
    sudo make test -j4
    sudo make runtest -j4
    sudo make pycaffe -j4
    sudo make matcaffe -j4
    在命令行下输入Python,会出现Python的一些信息,然后输入import caffe,没有报错说明配置成功。在命令行下输入matlab,会打开MATLAB软件。
    如果前面所有的配置过程都没有问题的话,最后一步应该是不会出错的。至此,caffe所有的配置项都完成了,接下来就可以愉快地使用这个强大的深度学习框架了。

你可能感兴趣的:(模式识别,机器学习,深度学习)