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

相關文章
相關標籤/搜索