Ubuntu16.04上配置使用superpixel-benchmark——未完待续

Ubuntu16.04上配置使用superpixel-benchmark

一、相关软件安装

配置之前请确保Ubuntu有至少50G空间(多留点)、尽量保证Ubuntu系统纯净,不然容易出现意想不到的错误,不行就先重装Ubuntu系统
在安装以下软件和包之前务必先安装opencv(我安装的是opencv3.4.0版本,安装之前请安装相关依赖)Cmake(我的是3.5.0版本)Boost(这个是在安装opencv依赖的时候安装的)
opencv安装之前安装好Glog(下面有说怎么装)
opencv使用cmake-gui进行编译、安装,因为需要对应得Opencv_Contrib
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

opencv使用cmake-gui编译的时候勾选:BUILD_opencv_world和NONFREE、以及在CMAKE_BUILD_TYPE后填上:RELEASE、在OPENCV_EXTRA_MODULES_PATH后填上opencv-contrib/modules的路径。

1.GCC-4.7、G++ -4.7

首先在GitHub上download下源码:superpixel-benchmark
下载后打开文件夹可以看到有一个docs文件夹,其中就是关于如何配置以及使用benchmark的方法。在BUILDING.md中可以看到配置前系统需要装MATLAB以及Java等软件和包。MATLAB版本不能过高(感谢师兄的指导),此处使用MATLAB2014a。因为MATLAB2014aGCC/G++ 4.7.X这个版本相匹配,因此先检查自己Ubuntu16.04的GCC/G++的版本,如果不是GCC/G++ 4.7.X ,请卸载GCC\G++
查看:

gcc --version		// 查看gcc版本
g++ --version		// 查看g++版本

卸载:

sudo apt-get remove gcc		// 卸载gcc
sudo apt-get remove g++		// 卸载g++

安装GCC/G++ 4.7.X

sudo apt-get install -y gcc-4.7
sudo apt-get install -y g++-4.7

软连接

cd /usr/bin    	// 进入/usr/bin文件夹下
sudo rm -r gcc  		// 移除之前的软连接
sudo ln -sf gcc-4.7 gcc 		// 建立gcc4.7的软连接
sudo rm -r g++  		// 同gcc
sudo ln -sf g++-4.7 g++

完成后再查看一下GCC和G++的版本,看是否安装正确。
在这里插入图片描述

2.MATLAB2014a—Linux版本

自行安装

3.Glog安装

Glog下载:Glog 、或者:Glog
下载解压出来后,在解压出来的文件中
执行以下命令安装:

sudo ./configure 
sudo make 
sudo make install

4.libpng、libpng++、zlib

安装这三个之前需要先装opencv
libpng、libpng++、zlib的下载链接:libpnglibpng++zlib
我下载的分别为png+±0.2.5.tar.gzlibpng-1.2.53.tar.gzzlib-1.2.1.tar.gz
安装方法通常为:

sudo ./configure 
sudo make 
sudo make install

5.Eigen3、CImg、jdk1.8.0_45、pcl

这三个包因为有个别算法要用到(参考docs\BUILDING.md),所以根据使用情况下载。
我下载的Eigen3版本为3.3.91jdk1.8.0_301CImg忘了是哪个版本(请根据docs\BUILDING.md中提供的命令下载安装)
下载jdk1.8.0_301在:官网。我下载是Linux x64 Compressed Archive,安装方法自行查找。
pcl:在VCCS这算法中用到了PCL,但是我暂时没安装PCL,暂且不管

二、使用

相关软件和包安装完成后,再根据docs\BUILDING_CIS.md修改一些东西。
先下载CIS,下载后解压,将里面的文件和文件夹全部拷贝到lib_cis中。
在这里插入图片描述
拷贝完成后,再根据文档提示修改代码:
第一处:superpixels.cpp(此处指的是lib_cis中的superpixels.cpp)中main函数注释掉。
第二处:将superpixels.cpp中的loadEdges函数的命名改为:

void loadEdges(vector<Value> &weights,int num_pixels,int width,int height,
                   Value lambda, vlib::image<unsigned char> *edges)

再注释掉loadEdge函数里面的

image<uchar> *edges = loadPGM(name);

第三处:注释掉computeWeights函数(superpixels.cpp)中的

float sigma = 2.0f;

然后在将computeWeights函数名改为

void computeWeights(vector<Value> &weights,int num_pixels,int width,
					int height,Value lambda, float variance,
					int incrX,int incrY, image<uchar> *I,
					int TYPE,float sigma)

第四处:将energy.h(lib_cis文件夹下)中的

    add_tweights(y, 0, C);
    add_edge(x, y, B+C, 0);

改为:

    this->add_tweights(y, 0, C);
    this->add_edge(x, y, B+C, 0);

三、一些坑

1.CMakeList的修改

在编译之前,我改了一些CMakeLists(superpixel_benchmark根目录下的CMakeLists.txt)的配置,我只留了3个OFF,因为superpixel_benchmark下载后,lib_refh和lib_reseeds两个文件夹下没有相关库文件,我暂时没去找,所以就先不构建reSEEDS和reFH。VCCS需要PCL库,我暂时也没处理,所以也OFF了。如下图:
在这里插入图片描述

2.头文件错误的问题

DASP算法中,使用到了Eigen3库,但是在程序中头文件可能有问题:例如在lib_dasp/lib_dasp_pds/pds/Fattal.hpp文件中,包含了Eigen3的头文件:#include <Eigen/Dense>。但是我在安装Eigen3的时候,路径为eigen3/Eigen/Dense 因此要改成

#include<eigen3/Eigen/Dense>

这个问题看个人情况,当然不止Fattal.hpp中要改,只要用到Eigen3的文件,都要讲头文件改正确。例如:将#include <Eigen/Eigenvalues> 改为 #include <eigen3/Eigen/Eigenvalues>。

lib_dasp/lib_dasp/Plots.hpplib_dasp/lib_dasp_graphseg/Rendering.hpp 中有这个头文件:#include <GL/glew.h> 。编译的时候可能找不到。找不到是因为没有安装库,此时再执行以下命令安装相关的库:

sudo apt-get install libglew-dbg libglew-dev libglew1.10 libglewmx-dbg libglewmx-dev libglewmx1.13 glew-utils

lib_cw中用到了cvGetMatSize() 这个函数,但是有可能因为没有包含头文件报错,因此在lib_cw/compact_watershed.h文件中加一句

#include <opencv2/core/internal.hpp>

3.编译的一些坑

将上面的准备工作做完后,在进行cmake编译的时候有可能出现关于Boost的相关错误,比如找不到Boost库,尽管已经安装了,但还是可能报错。我重装系统后重新配置后,解决了这个问题,
cmake编译出现如下则说明cmake成功
在这里插入图片描述
cmake如果没有问题的话,接着就make
建议使用 sudo make make -j4 (数字4 表示你设置虚拟机时,选择的内核数量),如果使用sudo make的话 会导致运行MATLAB的时候,权限不够。因为我的MATLAB在安装的时候出现指定用户。
在make的过程中会出现一些警告,比如有些函数或者变量定义了,但是没有使用,或者就是一些类型转换警告,可以不用管。
如果出现Boost相关的error,比如boost某个函数未定义的引用,这就和你安装的boost有管了,网上解决的办法比较少,我TMD直接重装系统。

在解决上面问题后,终于make成功。
在这里插入图片描述

make成功后,根目录中会生成一个bin文件夹,里面就是所有生成的可执行文件。
在这里插入图片描述
使用方法参考docs/EXECUTABLES.md

四、更新–关于reseeds、refh、vccs三个算法的编译

直接从GitHub上下载作者的代码,可能lib_reseeds、lib_refh两个文件夹里面的库下载不了,需要手动去下载。下载后的reseeds和refh,文件夹里只需要lib这个文件夹的东西(应该是这样,我只用到了lib这个文件夹)。分别将两个lib放入对应放入lib_reseeds、lib_refh文件中,然后在根目录的CMakeList.txt中将reseeds和refh的OFF改为ON。

VCCS算法用到了PCL库,我安装好了PCL-1.7这个版本。在安装PCL之前要安装一些依赖库,可能会和开始配置的时候有些依赖重复,重复的依赖可以安装(安装的时候可能会提醒已经安装,那就不用管了),也可以不再安装。
PCL安装好后,需要先找到PCL的头文件的位置通常会在==usr/include/pcl-1.7/pcl/==下面,自行查找。
记住找到的位置,然后在lib_vccs文件夹下的 vccs_opencv_pcl.cpp文件中将关于pcl头文件修改
例如我的pcl头文件是在 usr/include/pcl-1.7/pcl/,然而 vccs_opencv_pcl.cpp中写的路径是

#include <pcl/point_cloud.h>

需要改为

#include <pcl-1.7/pcl/point_cloud.h>

如果你的路径是usr/include/pcl/,那就不需要改。

然后在根目录下的CMakeList.txt中将VCCS的OFF改为ON,就可以编译了。

五、一些小问题

1.执行compare_fh_refh.sh的时候报错

./bash/compare_fh_refh.sh: Syntax error: "(" unexpected

在终端中输入

sudo dpkg-reconfigure dash

出现一个界面,选择否或者no。
2.运行MATLAB相关算法的时候,需要先运行根目录下的make.m文件。make.m文件中需要修改一些参数,文件开头有如下内容

BUILD_TOOLS = 1;
BUILD_EAMS = 0;
BUILD_NC = 0;
BUILD_QS = 0;
BUILD_SEAW = 0;
BUILD_TP = 0;
BUILT_TPS = 0;

0代表是否编译生成相关算法的配置文件。我将0全部改为1。这样所有使用MATLAB编写的算法都可以使用。或者你要使用哪个算法,就将哪个改为1。

在配置成功后,建议将Ubuntu系统克隆一份出来,或者保存快照。配环境不易,且用且珍惜


暂时完结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值