【起因:】因为安装caffe需要opencv里的一些依赖项,于是又在ubuntu下安装一遍opencv3.4.5和opencv3.4.5_contribute,本以为很简单,因为前面在windows下已经用cmake方法安装过一次(https://blog.csdn.net/qq525003138/article/details/94754200),没想到换到ubuntu系统下,耗费了三天的时间,踩了一顿坑,才安装上。安装流程网上教程很多,基本大同小异,这里给一份我参考的博客:https://blog.csdn.net/j879159541/article/details/90672626 。这里主要叙述下我安装过程中遇到的问题以及解决办法,给自己留个mark,也顺便方便他人。
【问题1:】
ippicv_2019_lnx_intel64_general_20180723、xfeatures2d_boostdesc、xfeatures2d_vgg_20160317、face_landmark_model.dat下载失败,这个问题在configure和generate时会warning,还可以往下走,但一旦编译时(make)就会报致命错误。其中之一,如下图:
主要原因是访问国外站点网速不好,如果有代理可以用代理,没代理不能翻墙的,就参考下面这种方法。
【解决方法:】
1.找到opencv3.4.5/build/文件夹下,有个CMakeDownloadLog.txt,里面有下载失败的日志。如图:
里面 “https://raw.githubusercontent.com/........”以它开头的就是下载地址(有英文基础的,可以自己读下这个日志,很容易看懂的)。你需要的就是按照这个地址将里面下载失败的文件手动下下来,然后放到相应位置。
放到相应位置有两种方法:
1.放到opencv3.4.5/.cache/文件夹下,按照日志里的提示放到相应位置,并将文件名改为校验码+手动下载文件名,例如上面的就是:自己目录/opencv-3.4.5/.cache/data/7505c44ca4eb54b4ab16ac05-face_landmark_mdoel.dat 这种方法比较简单,只需改改文件名就可以。但是,有很多人在窗口内找不到.cache文件夹,那是因为它隐藏了,在终端用命令就可以看到。
2.但对于网速极差的我来说,第一种方法直接用源链接还是下载不下来,什么为了安全拒绝我访问。于是我选择直接去github第三方库网站下载:https://github.com/opencv/opencv_3rdparty (基本下载不了的都可以在这找到,下载前去日志里确认下下载的日期版本)。但现实还是再一次打脸,其他都能下载,ippicv还是下载不了,主要因为ippicv这个几百兆的包,下载时间太长了,每次不到几十兆就断了。(郁闷了有两天,差点放弃,终于在用迅雷下电影时,手贱又试了下,用迅雷竟然很快下载下来了,不亏是下片神器,嘿嘿~)然后,将下载的ippicv_2019_lnx_intel64_general_20180723解压到源码根目录/opencv/3rdparty/ippicv/这个路径下,先执行一次cmake或者cmake GUI的configure之后才会有,修改原来的第47行左右,改为本地文件,过程如下图:
修改下载face_landmark_model.dat的CMakeLists.txt文件,在opencv_contrib-3.4.5/modules/face/CMakeLists.txt,大概是19行左右,也修改为自己下载的本地文件路径:
其他缺失文件和这俩改法一样,就不再一一列出。 然后,再configure和generate时,观察下面信息栏就不会出现红色警告,make时也不会报这类文件缺失错误。
【问题2:】
anaconda环境变量和本地python起冲突,导致opencv编译时找不到一些依赖包。具体问题如图:
可以看到generate时已经提示了,没注意,导致了一个大坑。
【解决方法:】
既然是anaconda引起,就将ancaconda环境变量去掉就ok.
步骤如下:1.先找到本机环境变量和anaconda3环境变量之间的差异,就是要去掉的内容。
2.用gredit或vi删除差异部分
3.删除opencv/build下所有文件,重新configure和generate. 别问我为什么?因为我重启系统都不管用,还是会报错,后来觉得重头再来一次就好了。感觉有可能是环境变量文件已经被重写到build下某个文件里了。
【问题3:】
gstreamer库找不到,这个就是很easy的问题了,直接上图和解决方法。
【总结:】这次在ubuntu16.04下安装opencv3.4.5和caffe(后面也会出详细记录),前前后后花了近一个星期的时间,中间有几次差点想放弃,但是最终还是成功了。也让我明白了一个道理:没有什么问题是解决不了的,解决不了的原因就是你还没静下心来,静下心来去学习、去积累、去思考。