Ubuntu安装opencv及contrib踩雷总结(boostdesc_bgm.i,cuda.hpp,cv::xfeatures2d::SIFT’ has not been declared 等)

        本人是Ubuntu和opencv的纯萌新,应为机器视觉课程的原因接触了这些内容。最开始在虚拟机上做,后来迁移到了双系统,在新机子上重新配了一遍,随着课程进展用到了越来越多的功能,也碰到了不少问题,在这里做个总结。

        opencv的安装其实网上有很多详细的文章了,在这里就不再赘述了。唯一要注意的是一定!一定!一定!不要无脑下载最新版本。很多开源算法和最新一些版本的opencv都会有不兼容的情况。我最开始就是直接下了4.6.0,然后碰到了一堆问题……当然新版本也是可以用的,只是碰到很多问题时网上很可能找不到相关的教程,想要自己解决会有一定困难。所以建议是装3.X的版本。我最后安装的是3.4.10的,如果有需要可以跟着我的来,估计碰到的问题是差不多的。另外可能网上一些教程会让你装anaconda,之前在虚拟机上也装了,把环境搞得一团糟,还导致ROS运行出错……所以尽可能别用吧……

        我在安装时选择的方法是到github上下载zip,然后解压,再自己在源码文件夹里创建build,使用cmake来安装。这套方法大家其实可以多熟悉熟悉,很多软件的安装都可以这样来做。具体的安装流程可以看下面装contrib的那篇文章,或者自己随便找一篇也行。其中碰到了libjasper无法定位的问题,从别处找到的解决方法如下:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

        这里额外提一句,如果碰到问题觉得opencv的版本不合适想要更改,不! 要!直接删除opencv的源码文件夹,这样你安装的时候创建的很多环境变量和库文件都还在,即使新编译一个版本也可能存在问题。正确的做法参考这篇文章:

彻底卸载opencv_今年不吃饭...的博客-CSDN博客_卸载opencv

在按照里面操作好之后建议再使用搜索功能搜索opencv2和opencv4,再把所有的相关文件全部删除,彻底的除去(当然,如果电脑才刚开始用的话重装系统也不失为一种选择)。

        之后由于课程需要需要使用特征提取的模块,是在xfeatures2d里面的,搜了一下需要安装opencv_contrib,于是下载并安装了,过程中在make的过程中碰到了很多问题,其中主要的问题都参考了这篇文章解决:

Ubuntu 安装 C++ opencv 和opencv_contrib (主要记录出现的问题以及解决方法)_Lucky dog123的博客-CSDN博客_c++ opencv ubuntu

非常感谢这位大佬。我之前和这个模块死磕了两天,最后全部卸载从头再来,过程中碰到的问题基本都在这篇文章里了,包括

fatal error:boostdesc_bgm.i:没有那个文件或目录
52:12: fatal error: opencv2/xfeature/cuda.hpp

这两个问题,都可以按照这篇文章解决。出现这两个问题的根本在于:1.在cmake的时候大家或许就发现了有很多download failed,应当就是这些文件没有下在成功导致的;2.这个include的互相关系出现了问题,导致只能从绝对路径来找到。

        其中再提补充一点,在解决第二个问题,也就是各种文件的引用的问题的时候,要注意仔细看命令行的报错,一般的格式是

in flie included from xxxxx.hpp
xxxxx.cpp
……
#include<xxx.hpp> xxx.hpp No such file or directory

 前面几个是在include关系中出错的文件,最后一个才是根本的出错的,需要更改的文件。opencv的代码结构非常复杂,include的相互关系很乱,所以一定要找到最后那个文件,把里面那个找不到的路径改成绝对路径,应该就可以了。另外这里我碰到的出错的文件和那片文章不是完全一样的,可能不同版本也会不一样,原理都是一致的,就找到那个找不到的文件,并找到其绝对路径,然后替代之。我这边是改了三四个文件才过了这部分编译。

        结果后来又碰到了

cv::xfeatures2d::SIFT’ has not been declared

这个问题,参考了

Ubuntu下安装opencv3.4.6+opencv_contrib_pursuit_zhangyu的博客-CSDN博客

这篇文章得以解决。根本问题是没有正确的include相关的文件,其实和上一步的第二个问题是类似的。

        这样后我就成功make了!然后sudo make install就可以了。其他文件的设置等可以参考上面两篇文章,就基本大功告成了。

        最后在使用cmake来编译运行程序的时候又碰到了问题,主要是我之前安装了另一个版本,导致系统库里的CMake相关文件里保存了其他版本的相关信息。解决方案是仔细看命令行里面报错的文件,并删除之。然后再重新跑一遍cmake,就解决了。

        总结就是,碰到问题的话就仔细看命令行,看出错的原因和相关文件,做好定位。如果不会的就复制错误的信息搜一下,基本能找到类似的问题,再结合自己的情况解决一下就好。opencv毕竟是一个大的开源项目,里面有一些问题也难免。希望官方可以尽早解决一些吧,让我们这些小白不用绕这么多弯路hhh

        有什么问题欢迎交流!之后做作业碰到其他问题也可能会继续更新!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值