ubuntu16下同时安装opencv2和opencv3

ubuntu16下同时安装opencv2和opencv3

在使用HOG特征+SVM分类器运行时,报错:

error: ‘class MySVM’ has no member named ‘decision_func’

查了一下原因,程序使用的版本为opencv2.4.13版本,ros kinetic默认配置了opencv3.0的库,所以直接编译会报错。不想改程序所以直接在opencv3基础上添加一个opencv2.

参考

ubuntu16 安装多版本opencv

ubuntu16.04上的OpenCV多版本共存

安装步骤

  1. 可以首先查看当前的opencv版本

    pkg-config --modversion opencv
    

在这里插入图片描述

  1. 从官网上下载需要的opencv的版本(我下载的是opencv2.4.11)opencv官网

  2. 找个地方解压,可以解压到通常在的主目录,我解压在主目录下了/home//opencv2/

  3. 执行如下代码

    #首先安装依赖(但是这个依赖不知道是否必须要安装)
    sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
    #进入opencv的安装包内
    cd opencv2
    #后续如下按步执行即可
    mkdir release
    cd release
    mkdir installed
    #创建的installed文件集就是我们安装opencv2.4.13的路径,之前安装的opencv3.4的默认安装路径是/usr/local/,所以在cmake的时    候要指定安装路径。
    #cmake指定路径
    cmake -DCMAKE_INSTALL_PREFIX=/home/opencv2/release/installed -DCMAKE_BUILD_TYPE="Rlease" ..
    make
    sudo make install
    

    编译过程需要经过漫长的等待,期间会出现几个警告可以忽略。

切换不同版本的opencv

  • 首先查看安装情况在/home/lskk/opencv2/release/installed/lib中找到是否有pkgconfig文件夹。如果没有可能是上述步骤出现问题。

  • 修改.bashrc文件

    #打开./bashrc文件
    sudo gedit ~/.bashrc
    

    在文件最后添加(需要该成自己的文件路径)

    export PKG_CONFIG_PATH=/home/lskk/opencv2/release/installed/lib/pkgconfig  
    export LD_LIBRARY_PATH=/home/lskk/opencv2/release/installed/lib
    
  • 此时重新打开终端查看opencv版本会变成opencv 2.4.11,想切换回来把这两和使用#注释掉即可

C++工程中切换opencv

这部分我也比较模糊,网上说的需要在Cmakelist.txt文件中修改,但是我一个工程有好几个Cmakelist.txt文件,而且不知道修改在那一部分,但是我最后编译通过了。如下是我修改过的内容

  • 首先是工程文件第一级的src文件中有一个Cmakelist.txt文件是个只读文件。

在这里插入图片描述

修改如下:

在这里插入图片描述

  • 然后在功能包track_pkg中还有一个src文件,其下还有一个Cmakelist.txt文件。其中本来的语句是

    find_package(OpenCV REQUIRED)
    

    如果想要切换到opencv2的话需要修改成:

    set(CMAKE_PREFIX_PATH "/home/opencv2/release/installed/")
    find_package(OpenCV REQUIRED)
    include_directories( ${OpenCV_INCLUDE_DIRS} )
    

    想修改回来反向操作应该可以。

如果上述过程大佬发现有不对的地方,请不吝赐教,不胜感激

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值