1.依据官方文档说明中提及的依赖包,安装所必须的编译器、必要依赖包
sudo apt-get install build-essential (作用是提供编译软件必须软件包的列表信息)
sudo apt-get install cmake (跨平台的安装(编译)工具)
sudo apt-get install 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
注:遇到网速不行,个别软件无法下载时,可重复执行,直到所有的都已经正确安装
2.下载安装包
(1)安装最新稳定版,请到官网下载想要的源码包-传送门 ,解压到你的工作目录。
(2)安装最新版,可以直接使用git将源码克隆到本地:git clone https://github.com/opencv/opencv.git
3.编译(cmake)源码
(1)新建一个临时文件夹用于存放编译(cmake)过程文件
cd opencv (进入你自己的源码包)
sudo mkdir build
cd build
(2)这里既可以采用cmake-gui来配置,也可以命令行配置
cmake-gui配置
如果没有安装则需要先安装:sudo apt install cmake-qt-gui
打开:sudo camke-gui,设置OpenCV源码完整路径,e.g. /home/user/opencv;设置 <cmake_build_dir>, e.g. /home/user/opencv/build;点击“Configure”,设置可选参数;再点击“Configure”,最后点击“Generate”。注:参数配置可参考下面的命令行配置
命令行配置
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local PYTHON3_EXECUTABLE =/usr/bin/python3 PYTHON_INCLUDE_DIR = /usr/include/python3.5m PYTHON_INCLUDE_DIR2 =/usr/include/x86_64-linux-gnu/python3.5m PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS = /usr/lib/python3.5/dist-packages/numpy/core/include/ ..
注:
该过程经常由于ippicv下载不成功而失败(后面新版本好像不再作为必选,下载失败也不会报错),倘若下载失败,可自己手动下载-参考地址:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/${OPENCV_ICV_NAME}
具体可查看{opencv_root}/3rdparty/ippicv/ippicv.cmake,再将刚下载的ippicv_201*_lnx_*_general_201*.tgz用命令复制到文件夹{opencv_root}/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e (这里版本不同也会有所差异,新版本存放在{opencv_root}/.cache/ippicv/${OPENCV_ICV_HASH}-ippicv_201*_lnx_*_general_201*.tgz),继续执行cmake命令即可。
以上命名和路径均会因版本差异而又所区别,请灵活处理。
如果要更改默认安装路径,只需把CMAKE_INSTALL_PREFIX=.....改到自己的目标文件夹即可。
(3)build
sudo make
sudo make install
4.调用配置
为了满足不同的开发需要(多语言/多版本),进行相应设置才能使开发工具找得到自己安装的库文件/头文件!
管理方式常见有三种:加入Linux系统的动态链接;配置环境变量;pkg-config工具管理
如果是默认安装路径是 /usr/local/lib,一般不需要额外设置,install时放在了系统目录,以下操作主要是针对自定义安装路径或者多版本管理!!!
(1) 加入动态链接库
应用场景:使用gcc编译
缺点:不利于多用户、多版本管理
具体操作:
sudo gedit /etc/ld.so.conf.d/opencv.conf(如果没有该文件自己创建一个即可),在文件末尾加入opencv的安装路径${opencv_install_path}/lib,默认安装路径是 /usr/local/lib
或者 sudo sh -c 'echo "${opencv_install_path}/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig 使配置生效
(2) 配置环境变量
应用场景:直接调用可执行程序;使用其动态链接库
具体操作:
先打开系统环境配置的文件,有几种,很多博客设置的也不尽相同,若要细究请自查或查看我的另一篇博客关于Ubuntu的环境变量设置问题,内有简短介绍。
gedit ~/.profile # 在文件内容最后添加
根据应用场景,如果想直接调用可执行程序,请将opencv安装路径的bin文件夹添加在PATH变量,例如:
export PATH=${opencv_install_path}/bin:$PATH
根据不同的语言选择,如果是C/C++,请将opencv安装路径的lib文件夹添加在LD_LIBRARY_PATH变量,例如:
export LD_LIBRARY_PATH=${opencv_install_path}/lib:$LD_LIBRARY_PATH
如果是python,请将opencv安装路径的lib/python2.7/dist-packages/文件夹添加在PATH变量,例如:
export PYTHONPATH=${opencv_install_path}lib/python2.7/dist-packages/:$PYTHONPATH
与某些博客提及的拷贝cv2.so文件原理一致
保存退出,logout用户,再login,~profile的改动就生效了
(3) pkg-config工具管理
其实也是通过配置相应的环境变量实现,请将opencv安装路径的/lib/pkgconfig文件夹添加在PKG_CONFIG_PATH变量,例如:
export PKG_CONFIG_PATH=${opencv_install_path}/lib/pkgconfig:$PKG_CONFIG_PATH
补充说明:
如果要在其他的IDE里面使用OpenCV库,需要在编译界面的编译器设置里面添加opencv的头文件和库文件,动态链接库文件在{opencv_install_path}/lib中,头文件在{opencv_install_path}/include/opencv中。
如果有多个版本通过改变对应环境变量内各安装路径的顺序,即根据搜索优先级调整。
测试1:在Python中能否使用opencv库
打开终端:输入python,回车
输入import cv2 回车
输入 cv2.__version__ 回车,若显示对应版本号
输入 cv2.__file__ 回车,若显示对应库文件路径