Dynaslam编译运行 ubuntu18 + cpu

1.运行结果展示一下 (小白教程,大佬勿喷)

Dynaslam编译运行 ubuntu18 + cpu_第1张图片

运行很慢,离实时运行(>30FPS)差得很远,但最终跑起来了

2.环境(python2.7  + opencv2.4.11 + keras==2.0.9 + tensorflow==1.12.3)

        对于python2.7.17,是我现在ubuntu18系统的一个版本,另一个也是系统自带的python3.6.9.  两个系统,默认的是python2,可以通过终端输入指令python查看 .如果不是该版本的可以查怎么切换,方法很多.

        对于opencv2.4.11,opencv官网下载源码包.如果以前已经安装过其他高版本的opencv,没关系,不是基于py2装的.接下来,在上一步改变系统py指向py2后,进入opencv2.4下,输入指令

          cmake -D WITH_FFMPEG=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF ..

参考这篇博客的opencv2.4设置   ​​​​​​​​​​​​​​ ​​​​​​

大神这篇博客写的较详细,其他我就不在写了,下面主要写我遇到的问题

3.大坑

      1)python2下的pip安装: ubuntu系统装好之后,如果没有更改,py2和py3都有各自带的pip版本,而且都是9.0.1版本.如果更改过系统指向py3,用  pip -V 查看的时候,后面会显示基于py3,对于我们后面用pip装包的时候不是很方便.建议对pip进行更新,py2下的pip只能更新到20.3版本

      2)mask-rcnn : 下载好后,解压进入,会发现一个requirements.txt文件,打开删掉keras 和 tensorflow 两项,因为前面在py2下单独装了,可以输入 pip list 查看(py3下用pip3 list)如下图

Dynaslam编译运行 ubuntu18 + cpu_第2张图片

此为py2下的包. 然后mask-rcnn 目录下 输入   sudo pip install -r  requirements.txt  安装其他的包,此过程中或许会有错,最大的可能是网络问题,如果不行就将文件中的各个包pip装,网不行就加个源 如:    sudo pip install h5py -i https://pypi.tuna.tsinghua.edu.cn/simple/  装包的时候还可能出现opencv-python这玩意找不到与py2对应的版本,这不管,去opencv-python官网,如图

Dynaslam编译运行 ubuntu18 + cpu_第3张图片

复制黄色部分进行pip安装,先把mask-rcnn装好再说.到这儿,应该就没啥问题了

     3)关于Check.py :  这是用来检查mask-rcnn装好,能否正常工作的文件.在这遇到了我编译过程中最大问题.  最终发现不同电脑上的py2根目录下有些文件是不一样的,导致出现了一个   

                                                           DescriptorBase(metaclass = DescriptorMetaclass):
                                                                                                                    ^
                                                            SyntaxError: invalid syntax

这样的语法错误,根本问题是py2的有些文件变了,具体路径为  /usr/local/lib/python2.7/dist-packages/google    如果有不同电脑上就可以发现,可以直接将另一台电脑的google文件夹全拷贝过来,放到自己用的这台电脑,到此问题解决.(当然不是每个py2都有问题,至于这个问题怎么产生的,就不知道了,唯一知道的是py2已经不再维护了.)  如果不复制文件,可以找到这个错误的地方,将该处语法改为   DescriptorBase(six.with_metaclass(DescriptorMetaclass))

Dynaslam编译运行 ubuntu18 + cpu_第4张图片

 上述改过后,应该就能工作了.

    4)关于段错误(核心已转储): 我在编译完代码,跑数据集的时候,遇到加载mask-rcnn时,出现这个错误.网上有人说是没指定opencv2.4.11,我们装的那个版本  (其实这儿有个很有意思的地方,就是dynaslam文件下的cmakelists.txt文件中指定的版本全是跟py2有关的,但是编译的时候却索引到py3,这是我不懂的地方,看图.有懂的朋友可以评论区解惑)

Dynaslam编译运行 ubuntu18 + cpu_第5张图片

对于这个问题的解决,办法很普通,就是强制添加py2索引路径,如图

Dynaslam编译运行 ubuntu18 + cpu_第6张图片 

最后关于opencv2.4指定,cmakelists.txt文件其实已经指定了,只要你安装好了就能找到.到此问题解决,能够专心开始下一段学习. 

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