Elam的caffe笔记之配置篇(五):Centos6.5配置opencv3.1.0


配置要求:

系统:centos6.5
目标:基于CUDA8.0+Opencv3.1+Cudnnv5.1+python3.6接口的caffe框架html


1.下载opencv-3.1.0.tar.gz

本人是直接搜索文件名, 在csdn上下载的。亲测可用。
不得不说在linux上配置opencv3.1.0对咱们这种刚刚接触linux的新手实在有点不友好。
不过只要耐心,按照步骤一步一步来仍是可以成功配置的。python

2.安装前准备

编译安装依赖包linux

yum install gcc gcc-c++ gtk+-devel 
yum install libjpeg-devel libpng-devel libtiff-devel libavc1394-devel libraw1394-devel jasper-devel libpng-devel jasper-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel jasper-utils swig python libtool nasm cmake
yum install git gtk2-devel pkgconfig numpy python-pip python-devel gstreamer-devel gstreamer-base gstreamer-video gstreamer-app gstreamer-riff gstreamer-plugins-base-devel libv4l ffmpeg-devel mplayer mencoder flvtool2
yum install libgphoto2-2.4.7 gvfs-gphoto2 libdc1394* ant
yum install gtk*

首先说明上面的是最全的依赖包选项,若是你有能力把上面的都装了,这说明你可使用opencv的所有功能。
其中第一行的依赖包建议先yum info一下看看是否已经安装。固然,centosyum哪怕你包含各大镜像库,仍然不能所有一键下载。
若是你装了anaconda下的python,那么上面的python*以及numpy都是不须要下载的。
图片描述c++

这是我当时一顿install以后的结果
剩下的依赖包都须要去网上本身下载源码而后解压缩使用编译三部曲(./configure, make, makeinstall)进行安装.
其中gstreamer剩下的4个能够试试看yum install gstreamer,不行的话直接去网上下载包
参考http://blog.csdn.net/tiger991...
ffmpeg的编译能够参考http://www.cnblogs.com/cheng5...
反正我是没安装成功,须要装yasm,而后还有一大堆关于视频的依赖包,由于这是一个视频处理的插件,至少在使用caffe的时候是用不着的,所以虽然没有安装成功,咱们能够在接下来opencv的配置过程中直接把ffmpeg给屏蔽了,之后须要使用的时候在从新编译。
其余的包都是循序渐进的就安装成功了git

3.编译opencv3.1.0

选好路径以后centos

tar -zxvf opencv-3.1.0.tar.gz
cd opencv-3.1.0
mkdir build

而后利用cmake-gui进行配置,没有安装的话能够直接利用yum install cmake-gui进行安装,前提是你的cmake也是yum安装的或者更新的,要是是本身编译安装的高版本的cmake能够去网上搜一下怎么配置对应版本的camke-gui
安装完成后直接在终端输入:bash

cmake-gui

这个时候会跳出来这个界面
图片描述app

opencv的解压目录和build目录输进去以后点击Configure会出现
图片描述
with中的WITH-FFMPEG的钩去掉,再把python2python3*_INCLUDE_DIR*_LIBRARY改为你本身的pythonincludelib的对应路径
图片描述
而后再Generate两次!
确保所有变白(我记得是变白)
而后退出,进入build文件夹框架

cd build
make -j4

而后ide

make install j4

在编译过程当中出现的错误

三个字 茫茫多

nvcc warning : The ‘compute_20’, ‘sm_20’, and ‘sm_21’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).

出现这个问题的缘由是由于新版本的CUDA已经把compute_20和21弃用了,可是并无在makefile中删除,所以会产生这个warning
解决方法:
1:无视;
2:在cmake-gui中configure后找到CUDA-NVCC-FLAGS,并在后面加上--Wno-deprecated-gpu-targets,OK

Scanning dependencies of target opencv_imgcodecs
[ 17%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/loadsave.cpp.o
[ 17%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/utils.cpp.o
[ 17%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/grfmt_base.cpp.o
[ 17%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/grfmt_bmp.cpp.o
[ 17%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/grfmt_exr.cpp.o
[ 18%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/grfmt_gdal.cpp.o
[ 18%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/grfmt_hdr.cpp.o
[ 18%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/grfmt_jpeg.cpp.o
[ 18%] Building CXX object modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/grfmt_jpeg2000.cpp.o
In file included from /usr/include/jasper/jasper.h:77:0,
  from /home/HY/opencv-3/opencv-3.1.0/modules/imgcodecs/src/grfmt_jpeg2000.cpp:59:
/usr/include/jasper/jas_math.h: 在函数‘bool jas_safe_size_mul(size_t, size_t, size_t*)’中:
/usr/include/jasper/jas_math.h:143:15: 错误:‘SIZE_MAX’在此做用域中还没有声明
  if (x && y > SIZE_MAX / x) {
               ^
/usr/include/jasper/jas_math.h: 在函数‘bool jas_safe_size_add(size_t, size_t, size_t*)’中:
/usr/include/jasper/jas_math.h:170:10: 错误:‘SIZE_MAX’在此做用域中还没有声明
  if (y > SIZE_MAX - x) {
          ^
在全局域:
cc1plus: 警告:没法识别的命令行选项“-Wno-unnamed-type-template-args” [默认启用]
make[2]: *** [modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/src/grfmt_jpeg2000.cpp.o] 错误 1
make[1]: *** [modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/all] 错误 2
make: *** [all] 错误 2

这个错误出现的缘由是centos更新了jaspe-devel包为jasper-devel.x86_64 0:1.900.1-30.el7_3(旧版本为jasper-devel-1.900.1-29.el7.x86_64
解决方法:

vi /usr/include/jasper/jas_math.h

#include <stdint.h>后添加

if ! defined SIZE_MAX
define SIZE_MAX (4294967295U)
endif


关于python的接口问题,已经在上面指出在cmake-gui中指明pythonincludelib路径

Error:’NppiGraphcutState’has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppState, Npp8u* pDeviceMem);

解决方法:让他支持cuda8.0
进入opencv-3.1.0/modules/cudalegacy/src
此目录下打开终端

vi graphcuts.cpp

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

Warning”NPY_INTERNAL_BUILD”is not defind

无视,不重要

ippicv_linux_20151201.tgz这个问题我好像没出现,若是出现去网上下载这个压缩包而后去opencv目录下
替换掉/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgzOK

相关文章
相关标签/搜索