# test
**Repository Path**: liu-chaoyue/test
## Basic Information
- **Project Name**: test
- **Description**: No description available
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2020-12-08
- **Last Updated**: 2021-03-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 安装ffmpeg+opencv
**注1:本指导针对的是开发环境与运行环境不在同一服务器上的场景。**
**注2:运行环境可以存在多种架构(如arm架构下的Centos系统、arm架构下的Euleros系统、x86架构下的Ubuntu系统等),本指导中以ai1s云端环境(x86架构下的Ubuntu系统)为例,故编译安装的opencv为x86版。**
**注3:在安装opencv时,为了同时编译出python3-opencv,需要指定具体的python版本,由于难以源码编译出python3.7.5版本的opencv,本指导使用的python3版本为python3.6。**
**以下操作在开发环境操作,本文以普通用户为 **HwHiAiUser** 为例,请根据实际情况进行修改。**
1. 用户权限配置
普通用户安装开发套件,需要有sudo权限,所以首先需要给普通用户配置权限。
切换为root用户
**su root**
给sudoer文件配置写权限,并打开该文件
**chmod u+w /etc/sudoers**
**vi /etc/sudoers**
在该文件“ # User privilege specification”下面增加如下内容:
**HwHiAiUser ALL=(ALL:ALL) ALL**

完成后,执行以下命令取消“ /etc/sudoers”文件的写权限
**chmod u-w /etc/sudoers**
切换回普通用户
**exit**
2. apt源配置
由于安装过程中涉及很多apt依赖和pip依赖的安装,所以配置一个国内源是一个加快进度的好办法。
配置ubuntu18.04-x86的apt清华源
**sudo vi /etc/apt/sources.list**
将源文件内容替换为以下ubuntu18.04-x86的apt清华源
```
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
```
执行以下命令更新源
**apt-get update**
> **如果apt-get update失败,可以试用其他的国内源 https://www.cnblogs.com/dream4567/p/9690850.html**
3. pip源配置
创建并打开普通用户家目录下的.pip/pip.conf文件
**mkdir $HOME/.pip/**
**vi $HOME/.pip/pip.conf**
将如下内容填写到pip.conf文件中
```
[install]
#可信主机,请根据实际情况进行替换。
trusted-host=cmc-cd-mirror.rnd.huawei.com
[global]
#可用的源,请根据实际情况进行替换。
index-url=http://cmc-cd-mirror.rnd.huawei.com/pypi/simple/
```
执行 **:wq!** 命令保存文件。
4. 安装相关依赖
在命令行中以普通用户执行以下命令,安装ffmpeg+opencv所需要的第三方依赖
**sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-dev git cmake python3-setuptools python3-dev python3-pip pkg-config -y**
**python3.6 -m pip install --upgrade pip**
**python3.6 -m pip install Cython numpy --user**
5. 安装ffmpeg
1. 创建文件夹,用于存放编译后的文件
**mkdir -p $HOME/ascend_ddk/x86**
2. 下载ffmpeg
**cd $HOME**
**wget http://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz**
**tar -zxvf ffmpeg-4.1.3.tar.gz**
**cd ffmpeg-4.1.3**
3. 安装ffmpeg
**./configure --enable-shared --enable-pic --enable-static --disable-x86asm --prefix=/home/HwHiAiUser/ascend_ddk/x86**
**make -j8**
**make install**
4. 将ffmpeg添加到系统环境变量中,使得其他程序能够找到ffmpeg环境
切换为root用户
**su root**
打开conf配置文件
**vim /etc/ld.so.conf.d/ffmpeg.conf**
在末尾添加一行。
**/home/HwHiAiUser/ascend_ddk/x86/lib**
使配置生效
**ldconfig**
5. 配置profile系统文件
**vim /etc/profile**
在末尾添加一行
**export PATH=$PATH:/home/HwHiAiUser/ascend_ddk/x86/bin**
使配置文件生效
**source /etc/profile**
6. 使opencv能找到ffmpeg。
**cp /home/HwHiAiUser/ascend_ddk/x86/lib/pkgconfig/\* /usr/share/pkgconfig**
切换回普通用户
**exit**
6. 安装opencv
1. 下载opencv
**cd \$HOME**
**git clone -b 4.3.0 https://gitee.com/mirrors/opencv.git**
**git clone -b 4.3.0 https://gitee.com/mirrors/opencv_contrib.git**
**cd opencv**
**mkdir build**
**cd build**
2. 安装opencv
```
cmake -D BUILD_SHARED_LIBS=ON -D BUILD_opencv_python3=YES -D BUILD_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$HOME/ascend_ddk/x86 -D WITH_LIBV4L=ON -D OPENCV_EXTRA_MODULES=../../opencv_contrib/modules -D PYTHON3_LIBRARIES=/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=$HOME/.local/lib/python3.6/site-packages/numpy/core/include/ -D OPENCV_SKIP_PYTHON_LOADER=ON -D CMAKE_INSTALL_PREFIX=$HOME/ascend_ddk/x86 ..
```
**make -j8**
**make install**
3. 配置opencv
更新系统库
**sudo ldconfig**
7. 使python3.6-opencv生效
**sudo cp /home/HwHiAiUser/ascend_ddk/x86/lib/python3.6/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so /usr/lib/python3/dist-packages**
8. 修改环境变量
程序编译时会链接LD_LIBRARY_PATH环境变量地址中的库文件,所以要将ffmpeg和opencv安装的库文件地址加到环境变量中。
普通用户下执行以下命令进入配置文件
**vi ~/.bashrc**
在最后添加
```
export LD_LIBRARY_PATH=${HOME}/ascend_ddk/x86/lib:${LD_LIBRARY_PATH}
```
执行以下命令使环境变量生效。
**source ~/.bashrc**
9. 将开发环境安装的ffmpeg和opencv库导入运行环境中,以提供运行使用
**注意:以下操作在运行环境执行**
使用普通用户执行
**mkdir \$HOME/ascend_ddk**
**scp -r HwHiAiUser@X.X.X.X:/home/HwHiAiUser/ascend_ddk/x86 \$HOME/ascend_ddk**
> **X.X.X.X请替换为开发环境的ip,HwHiAiUser请根据实际情况替换。**
**sudo cp $HOME/ascend_ddk/x86/lib/python3.6/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so /usr/lib/python3/dist-packages**