Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)

原文:https://www.bearoom.xyz/2019/08/20/ubuntu16-04-make-opencv3-4-7/

一、前言

因为之前作死乱搞系统,然后就把Ubuntu的系统搞垮了,对于我这样的菜鸟而言,问题又看不懂,解决不了,docker又不会,从来都是重装系统解决一起。系统一重装,开发环境就得重来... 这次,编译的OpenCV版本是3.4.7,虽然4.0都出来了... 下载源码:

1、OpenCV,在这里找到要编译的版本,我找的是OpenCV3.4.7;
2、opencv_contrib,如果不想用这里面的功能,其实这个可以不用管的;找到和OpenCV3.4.7对应的opencv_contrib-3.4.7下载。
3、ippicv_2019_lnx_intel64_general_20180723,这个在cmake的时候会自己下载,但是贼慢,慢到可能都断掉了,所以还是手动下载吧。
4、face_landmark_model.dat,这个是make的时候下载,也是贼慢,也可以手动下载。

二、可能必要的前置

1、更新系统:

sudo apt-get update
sudo apt-get upgrade

2、依赖包:

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

三、编译

编译OpenCV,真的建议安装cmake的GUI,省事。安装cmake的GUI,如果跟我一样是菜鸟,真的别傻呼呼的敲命令行指令编译了,浪费时间,还几乎都不会去想这些指令是干啥的,当然啦,那种远程服务器之类的就算法,老老实实命令行吧:
sudo apt-get install cmake-qt-gui

然后解压OpenCV3.4.7和opencv_contrib-3.4.7,进入到OpenCV3.4.7的根目录下,打开终端,输入指令,新建build文件夹:

mkdir build
cd build

打开cmake的gui:

cmake-gui ..

设置cmake的源码路径和输入输出(不过这个这样打开就设置好了)
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第1张图片

打开分组视图和高级项:
在这里插入图片描述
接下来各项设置,仅供参考:
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第2张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第3张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第4张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第5张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第6张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第7张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第8张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第9张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第10张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第11张图片下面这张图有个漏了,就是OPENCV_ENABLE_NONFREE这个选项要打开,不然像sift等算法用不了,当然,可以不用。
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第12张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第13张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第14张图片
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第15张图片

这里的设置应该是比较清楚的,比命令行真的容易太多了,绝对适合我这种苯苯的菜鸟。有些设置是要先打开一些开关后,点击configure按钮先配置一会才会出来的:
在这里插入图片描述
configure点击之后应该会下载一些文件,包括前面提到的ippicv_2019_lnx_intel64_general_20180723,而face_landmark_model.dat可能是在cmake的时候下载,也可能是make的时候,反正都可以先下载下来。因为configure之后,ippicv等文件会下载很久,所以可以修改文件的路径指向本地文件,而不用每次都下载:

1、修改ippicv.cmake 文件,在/opencv源码根目录/opencv/3rdparty/ippicv/这个路径下,先执行一次cmake或者cmake GUI的configure之后才会有,修改原来的第47行左右,改为本地文件:
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第16张图片
2、修改下载face_landmark_model.dat的CMakeLists.txt文件,在opencv_contrib-3.4.7/modules/face/CMakeLists.txt,大概是19行左右,也修改为自己下载的本地文件路径:
在这里插入图片描述
OK,这些修改好之后,重新点击configure,然后再点击generate生成配置文件就可以关闭cmake的GUI了,接下来就是正常的make编译了:

make
make install

这里如果需要权限的话,就在命令前面加sudo,make如果太慢,可以:

make -j4

4是指4个线程,也可以是8或16或其它,看自己的CPU配置了吧。
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第17张图片
到这里差不多就make完成了,然后就是install,install基本没啥问题,有问题一般会在make的时候出现。

四、我遇到的问题:

问题1:出现类似/usr/bin/ld: warning: libpcre.so.1, needed by...的问题

在这里插入图片描述

解决方法,参考:在/etc/ld.so.conf.d下创建一个opencv.conf文件:

gedit /etc/ld.so.conf.d/opencv.conf

输入内容:

/usr/local/lib
/usr/local/anaconda3/lib
sudo ldconfig

然后重新make即可。

问题2:提示类似//usr/lib/liblept.so.5:对‘TIFFGetVersion@LIBTIFF_4.0’未定义的引用等问题。
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第18张图片
解决方法,参考:安装liblept5,有些博客会说下载tiff-4.0.4.tar.gz,然后编译安装,其实在我这个问题上不适用,解决不了。所以还是用下面这句安装:

sudo apt-get autoremove liblept5

问题3:在cmake-gui中configure的时候可能会提示有些×××.i的文件下载不了,主要是这些文件:
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第19张图片这个时候可以利用本地建立http来下载,可以先上网找这些文件下载下来,然后放到/var/www/html文件夹下,这个操作需要sudo权限,然后复制过去或者移动过去之后记得改下这几个文件的权限,不然普通用户可能用不了。然后依次修改/home/zcx/opencv-3.4.7/opencv_contrib-3.4.7/modules/xfeatures2d/cmake/download_vgg.cmake和/home/zcx/opencv-3.4.7/opencv_contrib-3.4.7/modules/xfeatures2d/cmake/download_boostdesc.cmake这两个文件的url下载路径:
Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第20张图片Ubuntu16.04编译OpenCV3.4.7(with opencv_contrib、nonfree等 by using cmake-gui)_第21张图片

我基本就遇到这些问题,所以暂时也就只记录这些吧。

五、参考

1、cmake GUI安装Opencv:
https://blog.csdn.net/jindunwan7388/article/details/80397700
https://blog.csdn.net/jindunwan7388/article/details/80397700

2、解决make问题的:https://blog.csdn.net/tsq292978891/article/details/78854188
https://blog.csdn.net/weixin_40409574/article/details/90714591

3、解决ippicv和人脸文件下载的:
https://blog.csdn.net/CSDN330/article/details/86747867

桃李溪边驻画轮,
鹧鸪声里倒清尊。
夕阳虽好近黄昏。
香在衣裳妆在臂,
水连芳草月连云。
几时归去不销魂。
–苏轼 《浣溪沙·春情》

你可能感兴趣的:(opencv,Linux)