前言
源码编译安装Opencv完整步骤以及问题总结。
一.下载opencv以及opencv_contrib
可以去github中,在右侧的release中找到需要的版本,opencv以及opencv_contrib版本号对应即可。
下载解压以后,将opencv_contrib放入opencv文件夹中,并在opencv文件夹中新建build文件夹,用来编译使用。
二.安装依赖
$ sudo apt-get update
$ sudo apt-get upgrade
因为安装 libjasper-dev 这个依赖包可能会出问题,所以先执行以下命令,在执行后续依赖包的安装
$ sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
$ sudo apt update
$ sudo apt install libjasper1 libjasper-dev
之后,安装其他依赖
$ sudo apt-get install libgtk-3-dev libgtk2.0-dev pkg-config
$ sudo apt-get -y install build-essential cmake
$ sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get -y install python3-dev python3-numpy python-dev python-numpy
$ sudo apt-get -y install libpython3.6-dev libtbb2 libtbb-dev
$ sudo apt-get -y install libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libdc1394-22-dev libavcodec-dev libavformat-dev
$ sudo apt-get -y install libswscale-dev libv4l-dev liblapacke-dev libopenexr-dev libxvidcore-dev libx264-dev
$ sudo apt-get -y install libatlas-base-dev gfortran ffmpeg
安装 cmake GUI
$ sudo apt-get install cmake-gui
三.使用cmake GUI进行配置
$ cd build
$ cmake-gui ../opencv-3.4.9
步骤如下:
1.点击Configure,选择Unix Makefile,选Use default native compliers。
2.按照顺序,然后 finish,此时 Configure 按钮变为 Stop ,表示配置进行中。
3.Configure 结束后,如果 cmake 的主界面仍有红色区域,则再次点击 Configure 进行配置,直到红色区域完全消失。
4.红色区域没了之后,进行下一步的配置
(1)在 CMAKE_BUILD_TYPE 值处选择 Release
(2)CMAKE_INSTALL_PREFIX 选择安装的路径 这里我选择 build 目录下自己新建的 myInstall 文件夹。
(3)在 OPENCV_EXTRA_MODULES_PATH 处,为其设置 opencv_contrib-3.4.9 的路径,精确到 /modules 目录
(4)勾选 OPENCV_PYTHON3_VERSION
(5)添加 python 的路径
PYTHON2_INCLUDE_DIR2 /usr/include/x86_64-linnx_gnu/python2.7
PYTHON3_INCLUDE_DIR3 /usr/include/x86_64-linnx_gnu/python3.6m
(6)勾选 OPENCV_GENERATE_PKGCONFIG 这个很重要,是生成 opencv.pc 的
5.再次点击 Configure 进行配置,如果还有红色就继续 Configure ,直到没有红色才可进行下一步。
红色区域没了之后还要注意下输出信息,滚一下看看有没有错误信息(通常也是红色字体,很显眼),一般是下载问题,如果有错误信息,就继续 Configure ,直到没有错误信息。
最后,点击 Generate,出现 “Generating done” 则意味着 cmake 的工作结束了。
正常来讲,上面第五步提到的下载问题是一定会出现的,这是因为服务器响应超时导致文件无法下载造成的,那么可以提前下载号之后,放入到制定的文件夹,并且替换即可。
1.根据输出的红色内容,可以找到一个"xxxdownload.txt"文件的路径,打开查看,就会发现这些文件本来应该被下载在哪儿,并且文件名称是什么。此时将我提供的这些文件 密码: mblb下载。根据对应的名称给其重命名,并放入制定路径。
2.如果不想查看*download.txt,也可以在opencv文件夹中Ctrl+h,显示隐藏文件,会看到.cache文件夹。
(1)data文件夹中会有face_landmark_model.dat的缓存文件,将其名称复制后,重命名给下载好的face_landmark_model.dat,之后替换原有的缓存文件。
(2)(3)ippicv和xfeatures2d文件夹也是如此操作。
此时再次点击 Configure,就发现没有红色输出了,最后,点击 Generate,出现 “Generating done” 则意味着 cmake 的工作结束了。
四.make&&make install
在build 目录下输入下面的命令,-j8 意思是用8个 CPU 去 make
$ sudo make -j8
#可以查看你的系统多少个
$ cat /proc/cpuinfo | grep "processor" | wc -l
之后
$ sudo make install
五.进行环境配置
1.pkg-config
首先,测试显示 OpenCV 版本号,命令行输入以下命令
$ kg-config --modversion opencv
解释一下 pkg-config 这个什么意思吗,pkg-config 就是我们告诉程序编译时从哪里找头文件和库相关信息。
opencv.pc放哪里?它默认会去/usr/lib/pkgconfig 里面找 opencv.pc 。当它在这里找不到 opencv.pc ,它就会到 PKG_CONFIG_PATH 所设置的环境变量去找,如果还没找到就会报错,比如上两个测试的报错。
所以:如果是 opencv4.pc 的就把下面提到的 opencv.pc 改为 opencv4.pc,当然你也可以重命名为 opencv.pc。
方法一:移动 opencv.pc 到 /usr/lib/pkgconfig
方法二:把 opencv.pc 放在你想放的路径,然后
(1). 打开 bash.bashrc
$ sudo gedit /etc/bash.bashrc
(2). 在文件后添加(改为自己的路径)
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/zxzn/opencv-3.4.9/build/myInstall/lib/pkgconfig
(3) 更新配置
$ sudo updatedb
2.配置库路径
$ sudo gedit /etc/ld.so.conf.d/opencv.conf
添加你自己的 lib 路径,就比如我的如下:
/home/zxzn/opencv-3.4.9/build/myInstall/lib
保存后,更新一下
$ sudo ldconfig
最后,再进行验证
$ pkg-config --modversion opencv
我的输出为3.4.9.
如果没有正常输出可以稍微等待或者重启即可。