由于最近要在OpenCV3中使用SIFT和SURF特征提取,而自从OpenCV2升级到OpenCV3版本后,SIFT、SURF等这些算法都被移出opencv默认项目库,而被放到叫opencv_contrib的项目库。因此需要手动下载opencv和opencv_contrib的源码,然后将两个源码放在一起手动编译安装。

由于我的电脑是VMware虚拟机跑的ubuntu18.04,并且ubuntu18.04中安装了ROS-melodic,而ROS-melodic装完后默认就把opencv-3.2.0版本顺带安装好了。所以,为了与ROS-melodic里面自带的opencv-3.2.0版本保持一致,我是下载了opencv-3.2.0和opencv_contrib-3.2.0源码,手动编译与安装,来覆盖ROS-melodic里面自带的opencv-3.2.0版本。下面我列出了我的环境:

  • VMware虚拟机
  • ubuntu18.04
  • opencv-3.2.0
  • opencv_contrib-3.2.0

1.下载opencv-3.2.0和opencv_contrib-3.2.0源码

去github下载就行了,下载地址如下:

下载好后将这两个文件同时解压到同个文件夹下,我是解压在opencv_install这样一个文件夹,如下图所示。

2.安装相关依赖

在编译和安装opencv源码之前,需要先安装相关依赖库,安装命令如下:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.-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--dev

上面命令执行会报错,错误说libjaster-dev无法安装,解决办法如下:

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

3.用cmake-gui工具配置opencv编译参数

(1)安装cmake-gui工具

在正式编译opencv源码之前,需要对opencv中的CMake参数做设置,推荐用cmake-gui工具配置。先安装cmake-gui工具,如下命令:

sudo apt-get install cmake-gui

(2)设置cmake参数

打开终端,输入下面的命令,启动cmake-gui工具:

cmake-gui

在打开的界面中,将where is the source code栏中设成opencv-3.2.0的路径,将where to build the binaries栏中设成opencv-3.2.0/build的路径,如下图所示。

然后点击Configure按钮,进行配置。配置过程会报错误,错误说缺vgg_generated_48.i之类的,解决办法是直接去网上下载vgg_generated_48.i这个文件,下载地址如下:

https://download.csdn.net/download/u013085286/10309843

下载好vgg_generated_48.i后,将这个文件复制到报错中提示的路径下就行了。以我的路径为例,用下面的命令复制:

cp vgg_generated_48.i /home/ubuntu1804/Downloads/opencv_install/opencv_contrib-3.2./modules/xfeatures2d/cmake/.download/e8d0dcd54d1bcfdc29203d011a797179/vgg_generated_48.i
上面命令中路径里面的e8d0dcd54d1bcfdc29203d011a797179根据你实际报错提示为准,类似的缺这些文件的错误,去网上下对应的文件,同样的方法解决就行了。
补齐了这些文件后, 然后再次点击Configure按钮,进行配置,应该就能正常配置了。

(3)设置cmake编译参数

在界面中将一下几个参数的取值设置好,具体参数和取值如下所示:
CMAKE_BUILD_TYPE参数取值Release,如下图所示。

OPENCV_EXTRA_MODULES_PATH参数取值/home/ubuntu1804/Downloads/opencv_contrib-3.2.0/modules,这个路径的前面几个文件夹用你的实际路径替代,如下图所示。

CMAKE_INSTALL_PREFIX参数取值/usr/local,如下图所示。

这里需要特别提一下,还需要将ENABLE_PRECOMPILED_HEADERS参数取值设成OFF。如果不关闭这个参数的话,后面编译会报错误/usr/include/c++/7/cstdlib:75:15:fatal error:stdlib.h:No such file or direct.

上面这些编译参数都设置好后,就可以点击Generate按钮,生成makefile文件。

4.编译和安装opencv

切换到opencv-3.2.0/build目录,用make和make install编译和安装就行了。

cd ~/Downloads/opencv_install/opencv-3.2./build/
make
sudo make install

当你执行完上面命令的时候,并看到100%的时候,恭喜你!安装成功!

在ubuntu18.04中安装opencv_contrib-3.2.0采坑教程的更多相关文章

  1. ubuntu18.04中安装iNode

    title: ubuntu18.04中安装iNode toc: false date: 2018-09-01 17:52:20 categories: methods tags: ubuntu iNo ...

  2. Ubuntu18.04中安装Python3.7教程

    Ubuntu18.04中安装Python3.7教程 链接https://blog.csdn.net/weixin_42056625/article/details/82970358

  3. Ubuntu18.04中安装cuda的记录

    一.参考: https://blog.csdn.net/QLULIBIN/article/details/78714596 https://www.jianshu.com/p/00c37b09f0f3 ...

  4. ubuntu18.04中安装和卸载cuDNN

    udnn安装注意点: cudnn的安装其实很简单,关键点是一定要安装cuda对应的cudnn包,本机中安装的cuda7.5所以对应的cudnn为v5.1这很重要,我就是安装错了版本,导致后面caffe ...

  5. Ubuntu18.04中安装vsftpd服务/ ftp上传文件提示无权限 553 Could not create file.

    1,安装 $ sudo apt-get install vsftpd 2.配置 备份并创建新的配置文件. $ sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_ori ...

  6. Ubuntu18.04中安装virtualenv和virtualenvwrapper

    1.安装virtualenv和virtualenvwrapper pip3 install virtualenv pip3 install virtualenvwrapper 2.创建目录用来存放虚拟 ...

  7. Ubuntu18.04下安装搜狗输入法

    Ubuntu18.04下安装搜狗输入法 第一步:安装 fcitx输入框架 sudo apt-get install fcitx 第二步:在官网下载 Linux 版本搜狗输入法 https://piny ...

  8. Ubuntu18.04下安装MySQL

    Ubuntu上安装MySQL非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client ...

  9. 在Ubuntu18.04中QT编程的环境构建(转)

    在Ubuntu18.04中QT编程的环境构建 原点分析 百家号06-2110:14 如果说QT大家觉得陌生的话,那么 Windows 早年推出的C++图形用户界面的应用程序开发框架MFC,应该是耳熟能 ...

随机推荐

  1. 爬虫之selenium爬取斗鱼主播图片

    这是我GitHub上简单的selenium介绍与简单使用:https://github.com/bwyt/spider/tree/master/selenium%E5%9F%BA%E7%A1%80 & ...

  2. [考试反思]0813NOIP模拟测试20

    咕了两天,补一下. 4个AK的,210是第10,190的第15并列一大排,我个傻子160排第29. 历史新低,但是心态还好. 真是没想到会一天考两场.中午没回去睡觉晚上考试... 困倒是其次,关键还是 ...

  3. 「2019.7.22 考试」AC和WA0一步之遥

    这卷子还是答的挺惨的. 第一题5min写完了,自认为AC(其实WA了80),第二题推了半天CRT的公式老出错结果发现是程序打错了.第三题打模拟150行结果数组没开够,开大就是0->60的转变.状 ...

  4. python机器学习——随机梯度下降

    上一篇我们实现了使用梯度下降法的自适应线性神经元,这个方法会使用所有的训练样本来对权重向量进行更新,也可以称之为批量梯度下降(batch gradient descent).假设现在我们数据集中拥有大 ...

  5. MQ基本应用场景

    简介 消息队列 MQ 既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积.高吞吐.可靠重试等特性. 应用场景 削峰填谷:诸如秒杀.抢红包.企业开门红等大型活动时皆 ...

  6. Flutter之环境配置与项目搭建

    Flutter之环境配置与项目搭建 一,介绍 1.1,Dart Dart 是一种 易于学习. 易于扩展.并且可以部署到 任何地方 的 应用 编程 语言.并且同时借鉴了Java和JavaScript.D ...

  7. 解决vuex的数据刷新(F5)后会被初始化的问题

    介绍一个vuex的数据刷新(F5)后会被初始化的问题处理的插件:vuex-localstorage 实现的原理大概就是监听浏览器的刷新,关闭事件,把vuex的值存储到本地localstorage,刷新 ...

  8. [LC]66题 Plus One (加1)

    ①英文题目 Given a non-empty array of digits representing a non-negative integer, plus one to the integer ...

  9. TestNG+Maven+IDEA 环境配置+入门

    一.环境配置 1.安装IDEA(参考:https://blog.csdn.net/m0_38075425/article/details/80883078) 2.在Prefernces,通过Plugi ...

  10. jsp页面使用EL表达式 使用Jstl标签库中的标签,需要引入jstl.jar和standard.jar

    spring boot 中使用jstl 首先在pom中加入 <dependency> <groupId>jstl</groupId> <artifactId& ...