ubuntu18.04中安装opencv3.2

ubuntu18.04中安装opencv3.2

基本环境

ubuntu18.04
ros-melodic( 在安装完整版的时候,会将 opencv3.2安装到ubuntu的 /usr/lib 位置 )

需求分析

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

我们需要自定义安装opencv3.2 和 opencv_contrib3.2。

一、下载opencv3.2.0和opencv_contrib3.2.0

1、opencv下载 选择你要装的版本下载(选择source是通过浏览器下载,选择github可以通过命令行git clone下载)
在这里插入图片描述

2、opencv_contrib下载 在Tags里找到相应版本下载,注意版本要与opencv一致

在这里插入图片描述

二、安装必要的库

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

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

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

配置我们使用cmake-gui

sudo apt install cmake-gui

二、安装前准备

我们将安装 opencv3.2到home目录 :

cd /home/cmx

解压opencv-3.2.0 和 opencv_contrib-3.2.0压缩包,分别产生opencv3.2.0 和 opencv_contrib3.2.0两个文件夹,将两个文件夹放到opencv_install文件夹下
在opencv3.2.0 下创建build文件夹
创建安装文件夹

mkdir opencv_install
cd opencv-install/opencv-3.2.0
mkdir build
mkdir -p ~/opencv_install/opencv/release

在这里插入图片描述

三、配置参数

直接在终端中输入cmake-gui,打开cmake图形配置界面
添加参数

where is the source code : /home/cmx/opencv_install/opencv-3.2.0
where to build the binary : /home/cmx/opencv_install/opencv-3.2.0/build

在这里插入图片描述

点击 Configure
然后在主界面会检测出需要配置的参数,在下面的调试界面会产生各种编译文件检查信息

四、解决问题

修改参数

参数名 参数值 原因
CMAKE_BUILD_TYPE Release 除非大神,不然你还想着调试官方的开源代码么
OPENCV_EXTRA_MODULES_PATH /home/cmx/opencv_install/opencv_contrib-3.2.0/modules 这就是SIFT和SURF特征提取算法所在的地方
CMAKE_INSTALL_PREFIX /home/cmx/opencv_install/opencv/release 这就是编译完成后安装的库文件和头文件的位置
ENABLE_PRECOMPILED_HEADERS OFF 如果不关闭这个参数的话,后面编译会报错误/usr/include/c++/7/cstdlib:75:15:fatal error:stdlib.h:No such file or direct.
OPENCV_ENABLE_NONFREE ON 使用各种算子都要引用nonfree.hpp头文件,并且3.2中已经废弃的legacy.hpp头文件,至于如何使用3.2中的特征提取方法大家就自己学习去吧

修复调试界面出现的各种问题

1)ippicv_linux_20151201.tgz文件无法下载,下载失败。

      $ cd /home/hh/opencv/opencv-3.2/3rdparty/ippicv/downloads/linux-xxxxxxx/ippicv_linux_20151201.tgz
          ippicv_linux_20151201.tgz,该文件大小为0kb

解决办法:

在Gitee上搜索ippicv,下载对应版本 (20151201) 的该文件,并将下载的文件替换原来0kb的文件就好。

2)boostdesc_bgm* 和 vgg_generated* 共11个文件(注意,我这里使用的*代表一个通配符),下载失败。包括boostdesc_bgm_bi.i、vgg_generated_48等文件,进入下面的文件夹之后你会发现一些以hash值命名的文件夹,其中虽然有你需要的文件,但是每个文件的大小都是0kb。

    $ cd /home/hh/opencv/opencv_contrib-3.2/modules/xfeatures2d/cmake/.download   这是下载文件夹
    $ cd /home/hh/opencv/opencv_contrib-3.2/modules/xfeatures2d/cmake/ 这是下载脚本所在的文件夹,在这里你会看到boostdesc和vgg下载脚本

解决办法:

在csdn中直接搜索文件名,开源大神都已上传(但是没VIP你估计拿不到);github官网;gitee官网都可以找到。
将download_boostdesc.cmake和download_vgg.cmake文件中最后几行的boostdesc_download和vgg_download注释掉,免的再次configure的时候又使用原下载链接再下载一遍,导致重新下载了一个0kb的错误文件。
然后将你下载好的文件boostdesc_bgm* 和 vgg_generated*放入以下路径

/home/cmx/opencv_install/opencv/opencv_contrib-3.2/modules/xfeatures2d/src

五、重新配置

点击Configure
点击Generate,生成makefile文件

六、编译安装

cd ~/opencv_isntall/opencv-3.2.0/build
make
make install

七、配置环境

1、配置方式1

在你的home目录中的 .profile 环境配置文件中添加以下内容,方便 编译程序 时查找库文件。

sudo gedit ~/.profile

在.profile文件下添加以下配置

export MY_OPENCV=/home/cmx/opencv_install/opencv/release
export CLASSPATH=${MY_OPENCV}/lib:$CLASSPATH
export PATH=${MY_OPENCV}/bin:$PATH
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/cmx/opencv_install/opencv/release/lib/pkgconfig

在这里插入图片描述

source ~/.profile

在文件 /etc/ld.so.conf 中新开一行直接添加以下内容,方便 执行程序 执行时查找动态库文件。

sudo gedit /etc/ld.so.conf

添加以下配置

/home/cmx/opencv_install/opencv/release/lib

在这里插入图片描述
至此,你就可以在opencv3.2中使用各种特征提取算法了。
至于为什么要设置最后一个变量 PKG_CONFIG_PATH,是为了方便使用命令 pkg-config 获取opencv库而添加的。

2、配置方式2(未尝试)

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

若找不到gedit命令则说明你之前没装,需要自己安装以下,打开一个终端,输入:

sudo apt install gedit

然后在打开文件中添加如下内容:

/home/cmx/opencv_install/opencv/release/lib

之后再终端输入以下命令(安装完成某个工程后生成许多动态库,该命令是为了让这些动态链接库为系统所共享)

sudo ldconfig

使其保存并生效。
再在终端输入

sudo gedit /etc/bash.bashrc

打开文件后在末尾输入:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/cmx/opencv_install/opencv/release/lib/pkgconfig
export PKG_CONFIG_PATH

保存退出,终端输入:

source /etc/bash.bashrc

至此,opencv及opencv_contrib安装配置完成了!

八、功能包中配置路径

我在find_object_2d中需要使用sift算子,但运行后还是无法使用,无奈只能修改CMakeLists.txt文件,指定新安装好的opencv路径
在这里插入图片描述添加一行设置指定opencv路径

set(OpenCV_DIR /home/cmx/opencv_install/opencv/release/share/OpenCV)

在这里插入图片描述

参考博客1:https://blog.csdn.net/cyfzwj/article/details/111991295

参考博客2:https://blog.csdn.net/weixin_47266712/article/details/125409787

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值