Centos7下安装FFmpeg、OpenCV3.3到Anaconda2的填坑记录

前言

为了安装支持视频处理的opencv折腾了好多天,记录一下最终成功的安装过程,虽然以后不大会再装了。
特别声明,如果只是想简单使用opencv处理图像,可以直接使用conda install opencv-python即可,不需要使用编译这种方法。

安装FFmpeg

参考centos7下opencv3的安装:

1
2
3
4
5
6
7
8
# 安装epel扩展源
yum -y install epel-release
# 添加扩展源
yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
# 安装ffmpeg依赖
yum -y install ffmpeg ffmpeg-devel

这样基本成功安装,可以通过ffmpeg -version并测试ffmpeg指令查看是否安装成功。

这边本来尝试了源码编译方法,但在后续opencv安装过程中始终找不到ffmpeg,原因不明。源码编译方法可以参考以下两个地址,其中也说明了一些ffmpeg的依赖。

  1. ubuntu安装使用ffmpeg
  2. Compile FFmpeg on CentOS

安装OpenCV的其他依赖

该步骤参考centos7下opencv3的安装以及Install OpenCV-Python in Ubuntu

首先,cmake 是必须安装好的。在Centos下可以使用yum进行安装,可按自己的需求选择性安装,我这边是除了Camera support (libv4l) 之外都安装了。

1
yum install gtk2-devel gstreamer-plugins-base-devel libpng-devel libjpeg-turbo-devel jasper-devel openexr-devel libtiff-devel libwebp-devel

安装OpenCV3.3.0

该步骤主要参考了Video Analysis(1):安装Ubuntu-ffmpeg-opencv

1、下载OpenCV

可以选择直接从github下载tar.gz包,解压文件,或者从其他途径下载皆可。

2、新建文件夹进行编译,避免污染环境

1
2
$ mkdir build
$ cd build

3、cmake配置

这边需要注意下cmake配置,特别是要装在Anaconda目录中,这边参考文章自行修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D PYTHON_INCLUDE_DIR={#修改成自己的路径#}anaconda2/include/python2.7/ \
-D PYTHON_INCLUDE_DIR2={#修改成自己的路径#}anaconda2/include/python2.7 \
-D PYTHON_LIBRARY={#修改成自己的路径#}anaconda2/lib/libpython2.7.so \
-D PYTHON_PACKAGES_PATH={#修改成自己的路径#}anaconda2/lib/python2.7/site-packages/ \
-D BUILD_EXAMPLES=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D PYTHON2_LIBRARY={#修改成自己的路径#}anaconda2/lib/libpython2.7.so \
-D BUILD_opencv_python3=ON {#修改成自己的路径#}opencv-3.3.0 \
-D BUILD_opencv_python2=ON {#修改成自己的路径#}opencv-3.3.0

额外说明,如果需要安装CUDA9.0,需要额外修改一些内容,按照OpenCV3.3+CUDA9.0+Cmake3.9 环境搭建进行配置。

并且要在cmake中增加一项配置 -D CUDA_GENERATION=Pascal,其中Pascal为版本,根据自己的GPU在NVIDA官网 (https://developer.nvidia.com/cuda-gpus#collapse2) 查找对应版本进行修改。
参考博客:

  1. Unsupported gpu architecture ‘compute_11’解决方法
  2. Ubuntu14.04 +caffe+cuda 7.0第五步。

4、编译

1
2
3
4
5
6
7
# j后面的数字为cpu数,自行修改
make -j8
sudo make install
sudo ldconfig
cd {#修改成自己的路径#}anaconda2/lib/python2.7/site-packages/
# 将cv2.so链接到anaconda目录中
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

5、测试

测试import cv2以及视频处理cv2.VideoCapture 方法,没问题就成功了!

这里还遇到一个问题是:
ImportError: /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0: undefined symbol: hb_buffer_set_cluster_level

根据stackoverflow上的回答Error importing cv2 in python3, Anaconda执行命令conda install -c asmeurer pango后解决了问题。

最后

感谢各种博客,结束了反复重复编译的苦难历程。/(ㄒoㄒ)/~~