安装步骤
- 安装FFMPEG
- apt-get安装相关的依赖库
- 下载opencv,opencv_contrib包
- 编译,安装
Step1. 安装FFMPEG,要想完全安装,这一步是必须的,本人就是没有开始没有安装这一部分,导致后面编译出现error而暂停的编译的情况。出现的错误,例如:modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:261: recipe for target 'lib/libopencv_videoio.so.3.2.0' failed。
modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:261: recipe for target 'lib/libopencv_videoio.so.3.2.0' failed。
(videoio大致就是跟FFMPEG相关了)
本人下载的是ffmpeg-3.1.11.tar.bz2,下载地址去github上ffmpeg,然后选择下载版本就可以了。安装指令比较简单,如下
这部分比较顺利,没遇到什么问题。
tar xvf ffmpeg-3.1.11.tar.bz2
cd ffmpeg-3.1.11
sudo apt-get install yasm
./configure --host-cppflags=-fPIC --host-cflags=-fPIC --enable-shared
make
sudo make install
Step2. apt-get安装相关的依赖库。这些依赖库在opencv编译的时候会用到。
-
$ sudo apt-get install build-essential
-
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
-
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
-
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
-
$ sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
-
$ sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
-
$ sudo apt-get install ffmpeg
这一块遇到了一些小问题,在apt-get安装的时候遇到的错误,如下图 :
出现这个错误的原因是其中某些依赖需要切换到python2进行安装(本人用的python3.5)。前两句语句意思是设置python两个版本的优先级,从而进行切换。要是出现这类错误,可能是这个原因。
-
sudo update-alternatives --install /usr/bin/pythonpython /usr/bin/python2 200
-
sudo update-alternatives --install /usr/bin/pythonpython /usr/bin/python3 100
Step3. 下载opencv,opencv_contrib包。注意,两个文件要版本一致。比如我下载的是opencv-3.2.0,opencv_contrib-3.2.0。下载地址同样在github上搜,选择相应版本的zip文件进行下载。目录结构:我将opencv_contrib-3.2.0放在opencv-3.2.0文件夹里面。
-
cd opencv-3.2.0 ###此处省略了解压的步骤。只需注意opencv_contrib-3.2.0在
-
###opencv-3.2.0文件夹里面。
-
mkdir build
-
cd build
-
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
Step4. 编译,安装,验证。
-
make -j4
-
sudo make install
-
sudo ldconfig
到这里安装就基本完成了,验证如下:
python #进入python环境
import cv2
print(cv2.__version__) #打印opencv版本
output:3.2.0
cam = cv2.VideoCapture(0) #验证ffmpeg功能
print(cam.isOpened())