您的位置:首页 > 运维架构 > Linux

centos7.2+python2.7 opencv安装教程(校园网无法连接校外网情况)

2017-06-22 14:15 1046 查看
无法连接校外网,意味着我们无法通过简单的指令直接从网上下载依赖包,这时候比较笨的方法是手动一个个下载依赖包,然后上传到我们的服务器。本文另有方法。

官方文档依赖条件(可以对比参考)

根据以下条件检查依赖包是否安装:(以下每一项都需要检查 Yum list xxxx 检查是否安装 )

autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel

为了支持GUI特征 gtk2-devel

为了支持摄像头 libdc1394-devel libv4l-devel

为了支持视频媒体 ffmpeg-devel(一般的源中找不到该包,需要添加源) gstreamer-plugins-base-devel

图形文件解码库更新

libpng-devel libjpeg-turbo-devel

jasper-devel openexr-devel(未安装)

libtiff-devel libwebp-devel(未安装)

ipp_icv 这个东西是一个并行计算库,在编译的时候如果没有这货,就会编译不通过。(去网上下载相应的包,解决问题,下文提到)

tbb-devel 线程构建模块 Intel’s Threading Building Blocks (TBB),是Intel公司开发的并行编程开发的工具。

eigen3-devel 矩阵计算 Eigen是一个开源的C++矩阵计算工具

由于无法连接校外网,所以国内国外镜像均无法使用,这里提出的解决办法是,找一台可以联网的电脑,虚拟机上装centos系统,然后通过yum,直接处理包的依赖关系,可以通过yum下载所有依赖关系的离线包,然后上传到我们的集群中,直接批量处理。

虚拟机上添加源(针对ffmpeg)

1.进入到源的目录下

/etc/yum.repos.d/


查看当前源

yum repolist


2.备份当前源,并将新的源拷入

mv CentOS-Base.repo CentOs-Base.repo.bk


wget http://mirrors.163.com/.help/CentOS6-Base-163.repo[/code] 
3.清除缓存重建源

yum clean all
yum makecache


4.安装EPEL_Release,因为安装需要使用其他的repo源,所以需要EPEL支持

yum install -y epel-release


如果出现缺少Code提示,可以:

sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7


5.安装Nux-Dextop源

导入一个Code

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro[/code] 
安装nux-dextop源

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm[/code] 

虚拟机上下载包及其依赖包

获取ffmpeg本省及其所有的依赖包

yum -y install ffmpeg --downloadonly --downloaddir=.


注意上面这行代码,是我们安装的关键,之前所有需要检查的依赖包,出现缺失的情况下,一个包可能又需要很多依赖包,这条指令可以直接将所有包下载下来,我们只需将下载好的包转移,批量安装,就可以完美解决我们没有网络的问题。同时可以下载多个包,只需要空格隔开。

安装所有依赖包

rpm -Uvh --force --nodeps *.rpm


解决完依赖关系,进入安装过程

https://github.com/opencv/opencv/releases/tag/3.2.0

下载源码包,执行以下命令

tar xvf opencv-3.2.0.tar
cd opencv-3.2.0
mkdir build
cd build


先Cmake一次(/opencv/opencv-3.2.0/填写你自己正确的路径,我自己在外面建了一个文件夹)

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/opencv/opencv-3.2.0/ ..


此时会发现Cmake停在了下面这个位置,直接用Ctrl+C停掉当前的Cmake

– checking for module ‘libgphoto2’

– package ‘libgphoto2’ not found

– ICV: Downloading ippicv_linux_20151201.tgz…

进入下面这个文件夹

opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e

会发现ippicv_linux_20151201.tgz文件,删除该文件

rm ippicv_linux_20151201.tgz


然后将上面ipp_icv下载中下载的文件放在这个文件夹下。

重新使用上面的命令Cmake一次。这一此Cmake不再卡在上面的阶段,但是报错。



我去网上找相关信息,找到一篇国外的博客,一样的问题,提示去下载Intel MKL(下载,序列号获取,参考我的另一篇博客:http://blog.csdn.net/a13326021319/article/details/73603370

下载 上传好之后,执行下面语句

tar zxvf l_mkl_2017.0.098.tgz
cd mkl_2017.0.098
sudo ./install.sh


安装过程中注意看提醒,输入前面得到的序列号,除此之外一路都是默认安装

如果直接执行安装,可能因为没有联网的关系,一直提示数字许可证过期。



根据提示,如下执行安装



再尝试cmake执行编译,这次,编译成功!!!



编译安装Opencv

make 编译,后面的参数 -j8指的是我的cpu有8线程,这个提议提高编译的效率。大家需要根据自己的CPU的线程数来确定这个值。当然,直接make也没问题,就是慢一点而已。

sudo make -j8


make过程依然会报错



去网上找相关错误,发现国外的论坛,针对性补上x264及其依赖包(方法同上,虚拟机下载,批量安装)

继续,依然报错

[ 40%] Built target opencv_cudafilters make: * [all] Error 2。(上面的方法没有解决问题)

仔细查看上面的报错信息,发现上面就有错误,试着解决



网上找到一篇博客

https://stackoverflow.com/questions/44038198/opencv-3-0-0-install-error-on-centos7

完全一样的错误。按照它里面的说法,需要将最新版本的jasper-devel-1.900.1-30.el7变回之前的版本jasper-devel-1.900.1-29.el7,虚拟机上centos下载到相应的包,上传,安装。



继续make

进行到这一步,卡了特别特别久



耐心等待就行(比较久)。

最终!!!!!终于编译成功!!!!!



最后一行命令:

sudo make install




完成,最后进行验证,Build文件夹下进lib文件夹,查看cv2.so是否存在,如图所示,存在



再进行下一步:

ln cv2.so /usr/lib64/python2.7/site-packages


在当前centos下是在这个路径下,不同的系统不同的安装路径需要调整红色部分位置

再在python内验证



安装完成!!!!!!

参考博客http://blog.csdn.net/daunxx/article/details/50506625

http://blog.csdn.net/chengfei112233/article/details/8244839

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: