一、安装numpy和scipy
相关库简介
· BLAS(Basic LinearAlgebra Subprograms)是基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序;
· LAPACK(Linear AlgebraPACKage)包含了求解科学与工程计算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇异值问题等;
· ATLAS是python下的一个线性代数库,是基于另外两个线性代数库BLAS和lapack的;
· NumPy提供了一个在python中做科学计算的基础库,它重在数值计算,甚至可以说是用于多维数组处理的库;
· SciPy是基于numpy,提供了一个在python中做科学计算的工具集,也就是说它是更上一个层次的库;
· Theano则是基于NumPy以及SciPy的一个更高级的用于科学计算的库。
相关库的关系
· 要安装Theano,就需要先安装好numpy和scipy;
· 要安装numpy和scipy,就需要ATLAS;
· 要安装ATLAS,就需要安装BLAS和LAPACK;
相关库的安装顺序
· 安装顺序:BLAS → LAPACK → ATLAS → numpy → scipy → Theano
检查numpy和scipy是否通过测试
- 说明:如果你的numpy和scipy是通过apt-get安装的,那么它们的单元测试可能会通不过!!!(我在安装过程中没有通过测试,scipy出现了Error)(原因是由于apt-get安装在usr/lib中,应该使用pip安装,sudo pip install numpy 安装在usr/local/lib下)
· 如果numpy或scipy不能通过测试,就需要卸载,然后重新按照本文介绍的顺序安装。
# 检查numpy是否通过测试
python -c "import numpy;numpy.test()"
如果numpy通过测试,会出现如下图所示的结果。注意最后一行errors=0 failures=0。如果没有通过测试,需要卸载并重新安装。
如果scipy通过测试,会出现如下图所示的结果。注意最后一行errors=0 failures=0。如果没有通过测试,需要卸载并重新安装。
卸载numpy和scipy
# 卸载numpy
sudo apt-get remove python-numpy
# 卸载scipy
sudo apt-get remove python-scipy
安装各种包
# 安装gfortran,后面编译过程中会用到
sudo apt-get install gfortran
# 安装blas,Ubuntu下对应的是libopenblas,其它操作系统可能需要安装其它版本的blas——这是个OS相关的。
sudo apt-get install libopenblas-dev
# 安装lapack,Ubuntu下对应的是liblapack-dev,和OS相关。
sudo apt-get install liblapack-dev
# 安装atlas,Ubuntu下对应的是libatlas-base-dev,和OS相关。
sudo apt-get install libatlas-base-dev
安装numpy和scipy
· 使用pip安装numpy和scipy
· 安装pip的命令:sudo apt-get installpython-pip
· 注意:一定要在安装完lapack/blas之后,再安装numpy和scipy。否则,会出现错误no lapack/blasresources found
· 安装numpy和scipy的命令如下所示。
# 安装numpy
sudo pip install numpy
# 测试numpy
# 测试通过才能进行下一步~~
python -c "import numpy;numpy.test()"
# 安装scipy
sudo pip install scipy
# 测试scipy
# 测试通过才能进行下一步~~
python -c "import scipy;scipy.test()"
· 为Scipy安装一些常用工具
sudo apt-get install -ylibfreetype6-dev libpng12-dev
pip install -Umatplotlib ipython[all] jupyter pandas scikit-image
测试:ipython
二、安装openBLAS
编译安装OpenBlas
· 为什么安装OpenBLAS?因为OpenBLAS的速度比atlas快。
- 下载OpenBLAS。github下载地址:https://github.com/xianyi/OpenBLAS
· 安装OpenBLAS
mkdir ~/git
cd ~/git
git clonehttps://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
make FC=gfortran -j$(($(nproc) + 1))
sudo make PREFIX=/usr/local install
将路径添加到LD_LIBRARY_PATH 变量中
echo'exportLD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
三、安装OpenCV3.1.0
首先安装一些必要的依赖库:
[plain] view plain copy
1. sudo apt-get install build-essential
2. sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
3. sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
进入官网: http://opencv.org/releases.html , 选择 3.1.0 版本的 source , 下载 opencv-3.1.0.zip
解压到你要安装的位置,命令行进入已解压的文件夹 opencv-3.1.0 目录下,创建build文件。
[html] view plain copy
1. $ unzip opencv-3.1.0.zip
2. $ cd opencv-3.1.0
3. $ mkdir build
4. $ cd build
5. $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_VTK=ON ..
生成的文件在bulid中,而生成的CMakeLists.txt文件在上一级文件中。在配置过程会出现– ICV:Downloading ippicv_linux_20151201.tgz…错误。可以到 ippicv_linux_20151201.tgz (https://download.csdn.net/download/chu_ying/9432287 )下载。
将下载的文件替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,同时在opencv-3.1.0目录下的CMakeList.txt 文件的开头加入一行,然后再次cmake即可,如下:
[html] view plain copy
1. $ cd ~/Downloads/
2. $ mv ippicv_linux_20151201.tgz opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/
3. $ vim opencv-3.1.0/CMakeLists.txt
1. 在弹出的文件开头加入一行(注意里面的引号要英文状态下的):
[plain] view plain copy
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")
2. 然后按esc和:wq保存退出。
[html] view plain copy
$ cd opencv-3.1.0/build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_VTK=ON ..
$ make –j8 #八核运算
可能会出现的错误:
错误内容1:
gcc-4.9: error trying to exec 'cc1plus': execvp:
没有那个文件或目录,说明gcc与g++版本不兼容,解决办法跟gcc版本太高时一样:安装低版本gcc与g++:
sudo apt-get installgcc-4.9 g++-4.9
之后进入/usr/bin:
cd /usr/bin
先删除和gcc5.0关联的gcc:
sudo rm gcc
sudo rm g++
再建个软连接
sudo ln -s gcc-4.9 gcc
sudo ln -s g++-4.9 g++
错误内容2:
modules/cudalegacy/src/graphcuts.cpp:120:54: error:
‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize,
NppiGraphcutState** ppState, Npp8u* pDeviceMem);
这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:
修改~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容,如图:
(本机在make -j8 命令编译到 88%时仅仅出现错误2)
然后重新编译
[html] view plain copy
1. $ make –j8 #八核运算:计算性能高时可以采用16核计算
2. $ sudo make install
以上最后两步比较耗时,耐心等待。
安装完成后通过查看 opencv 版本验证是否安装成功:
[html] view plain copy
1. $ pkg-config --modversion opencv
结果:3.1.0
结束后,还需要配置一下环境变量:
1 sudo gedit /etc/ld.so.conf.d/opencv.conf(可自行创建)
末尾添加一行/usr/local/lib
sudo ldconfig
sudo gedit /etc/bash.bashrc
末尾添加一行
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
2 /etc/bash.bashrc中LD_LIBRARY_PATH加入/usr/local/lib
source /etc/bash.bashrc