前面说过opencv和python模块的安装,版本是基于opencv 2的,这篇主要说一下opencv3的安装过程以及相关依赖问题的解决,同样opencv3的安装包在官网上可以下载,最新稳定版是3.3.0,下载之后安装包为:opencv-3.3.0.zip;opencv3的安装包比2大了2倍以上,改动很大,支持的扩展也很多,具体官网上列出如下:
这些依赖部分简单说明如下:
1). gcc一般系统都会有
2). cmake要手动安装并且版本要大于2.8.12,安装过程之前也写过
3). git这个不是必须的,根据需要安装
4). GTK不需要也可以不装,需要的话去官网下载包编译即可
5). pkg-config一般系统自带
6). python默认用系统的2.7最好提前安装一下numpy,具体过程前面安装opencv2都说过
7). ffmpeg依赖,opencv视频处理部分是基于ffmpeg的,所以如果想用opencv3来处理视频那么必须安装ffmpeg依赖,并且不能下载官网上最新的ffmpeg,opencv调用的是比较老的系统版本,待会会说明怎么使用yum安装
8). 其他依赖 比如libjpeg或者libpng等,这些尽量都要安装上,用默认的yum源就可以
9). CUDA GPU支持,如果有GPU并且驱动和CUDA Toolkit都已经正确安装,那么opencv会自动支持
下面开始安装,解压安装包并进入:
unzip opencv-3.3.0.zip
cd opencv-3.3.0/
mkdir build
这里为了不污染源码环境,要求必须在新目录中编译,现在如果直接开始编译那么中间会下载ippicv_2017u2_lnx_intel64_20170418.tgz并且非常慢,这个如果需要可以提前下载好,如果不需要可以屏蔽,下载地址是:http://www.linuxfromscratch.org/blfs/view/svn/general/opencv.html 进入下载即可,配置方法如下:
首先编辑ippicv.cmake文件 vim 3rdparty/ippicv/ippicv.cmake 然后找到ocv_download这个函数部分,URL下面有一个下载链接,我这里修改如下:
配置成上面这个前提本机要启动一个服务器,比如apache,nginx或者python自带的都行,python自带的启动要在上面那个tgz所在的同一目录启动,启动命令是: python -m SimpleHTTPServer 80 另外apache或者nginx的web目录中也要放入上面下载的文件才可以,具体目录都可以自己定义的,只要能下载到就可以,另外如果不用就更简单了,随便修改一下原来的下载域名下载不到即可,修改完之后保存并退出,这时候编译时下载就很快了
然后如果需要ffmpeg支持,那么需要安装相关的库,安装过程如下:
# 安装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依赖就安装好了,如果没有网络的话,建议现在一台有网的计算机上安装收集到具体的rpm包,然后再复制过去安装即可,当然如果不使用opencv的视频处理库,而是直接使用ffmpeg解码,那么上面步骤就完全不需要了
现在ippicv和ffmpeg都准备好了,那么可以开始安装opencv3了
执行cmake配置:
cd build/
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..
上面如果CMAKE_INSTALL_PREFIX安装目录不指定,默认是安装到/usr/local下和系统放一块,完成之后可以查看支持的相关扩展,没问题执行编译并安装:
make -j4
make install
执行完就安装成功了,关于python的支持配置和之前完全一样,复制cv2.so模块到python库目录下即可;另外ffmpeg支持测试如下:
首先进入解压好的源码目录,不是安装目录,然后再执行 cd samples/cpp/example_cmake/ 进入示例目录,会看到里面有一个example.cpp文件,在原来基础上修改如下:
1 #include "opencv2/core.hpp"
2 #include "opencv2/imgproc.hpp"
3 #include "opencv2/highgui.hpp"
4 #include "opencv2/videoio.hpp"
5 #include <iostream>
6
7 using namespace cv;
8 using namespace std;
9
10 int main()
11 {
12 cout << "Built with OpenCV " << CV_VERSION << endl;
13 Mat image;
14 VideoCapture capture("/root/test.mp4");
15 if(capture.isOpened())
16 {
17 cout << "Capture is opened" << endl;
18 for(int i = 0;i < 10;i++)
19 {
20 capture >> image;
21 if(image.empty())
22 break;
23 char image_name[6];
24 sprintf(image_name, "%d.jpg", i);
25 imwrite(image_name, image);
26 }
27 }
28 else
29 {
30 cout << "No capture" << endl;
31 }
32 return 0;
33 }
上面的代码很简单就是从视频中解出来10帧图片,视频文件自己找一个测试即可,编辑完成之后执行下面命令编译:
cmake .
make
如果执行编译没什么问题,那么现在应该生成了一个opencv_example的可执行程序,然后 ./opencv_example 执行即可,正常应该可以生成0.jpg~9.jpg这10张图片
到这里opencv3环境就安装好了