您的位置:首页 > Web前端

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

2017-03-11 10:54 183 查看
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
bf00
-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所有的配置项都完成了,接下来就可以愉快地使用这个强大的深度学习框架了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐