系統:centos6.5
目標:基於CUDA8.0+Opencv3.1+Cudnnv5.1+python3.6接口的caffe框架html
本人是直接搜索文件名, 在csdn上下載的。親測可用。
不得不說在linux上配置opencv3.1.0對咱們這種剛剛接觸linux的新手實在有點不友好。
不過只要耐心,按照步驟一步一步來仍是可以成功配置的。python
編譯安裝依賴包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
一下看看是否已經安裝。固然,centos
的yum
哪怕你包含各大鏡像庫,仍然不能所有一鍵下載。
若是你裝了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
選好路徑以後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
的鉤去掉,再把python2
和python3
中*_INCLUDE_DIR
和*_LIBRARY
改爲你本身的python
的include
和lib
的對應路徑
而後再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
中指明python
的include
和lib
路徑
④
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.tgz
OK