2017.8.15更新:http://download.csdn.net/download/fan2273/9929582
Surround360拼接流程测试与简单分析(附官方数据集效果图)
最近在研究实时全景视频拼接算法,了解到facebook开源了自己的Surround360,便打算下下来研究一下。
这边基本的配置流程,主要参考了CSDN上的两位博主的博客:
http://blog.csdn.net/sunyolanda_cs/article/details/52448399
http://blog.csdn.net/sunyolanda_cs/article/details/52448606
Surround360配置流程请按上面第一篇博客走!
依赖项装完后,不要急着编译,请阅读本博客下面的部分,安装folly和ceres!
(上述博客未安装这两个依赖项)
CSDN上比较不错的一篇Surround360分析:
http://blog.csdn.net/electech6/article/details/53618965
看着好像配起来很容易,但其实坑巨多,我大致前后花了两天时间,才把基本的环境搭好(还没算编译Surround360的时间)。
这边再给出一份可能有用的Surround360配置的博客:
http://blog.csdn.net/cfqcfqcfqcfqcfq/article/details/54645431
感谢以上博主的经验分享。
接下来,我就主要说一下我遇到的问题。
问题主要情况:
1.ffmpeg的相关项配置
2.folly库及依赖的boost配置
3.googletest配置
4.ceres安装
过程中出现的主要报错问题:
1.libfolly.so(recipe for target 'libfolly.la' failed)
这里是因为boost库没有在编译folly前安装的原因(亦有可能是版本不对,或未安装完全)
2.undefined reference to `boost::re_detail_106400…………
boost库配置错误的原因,动态链接库缺失或者混乱
3.logging_example(make时的error)
其实也是因为boost库配置错误,导致编译成功后,googletest无法运行
4.执行make check,发生error
离开时的路径为folly/test/gtest/,看似是googletest错误,网上一些经验指出是googlemock没有安装,但因为google升级,mock和test已经合并成googletest一个库了。同时,由于folly在编译过程中,无需预先安装,只要gtest在指定目录下就可以。
5.make Surround360失败,显示error 1 FIND_PACKAGE(Ceres REQUIRED) : don't find CeresConfig.cmake
这个时候需要安装ceres库,可以git clone,或者直接下载tar包。这里给出官网的安装教程。
http://www.ceres-solver.org/installation.html#section-customizing
按照其中的安装步骤便可完成安装。
解决方法与排错思路:
1.ffmpeg的配置
基本参照前面给出的博客,可以完成配置。
因为ffmpeg有一部分依赖包需要手动编译安装,主要容易出错的基本是这部分。
当最后安装ffmpeg出现报错信息的时候,可以比较容易定位到具体哪个库没有安装上。
2.folly库安装
folly库是facebook一套开源库,具体的不多说,这里给出git地址:
https://github.com/facebook/folly
推荐直接用git clone命令获得folly。
这里给出标准的安装步骤(基于官方README文档)。
官方文档附于git目录下,简明易懂,但比较容易跳过一些内容导致依赖库出问题,建议参照仔细阅读。
同时,建议阅读以下文档后,不要急于安装,先往后翻一下本人的话。
以下所有的folly目录路径,实质为git后获得的folly/folly子目录。
1).folly需要gcc 4.9+以上版本,以及boost支持C++14版本
2).下载googletest:https://github.com/google/googletest/archive/release-1.8.0.tar.gz
解压到folly/test的子目录gtest中
参考以下命令:
(cd folly/test && \
rm -rf gtest && \
wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz && \
tar zxf release-1.8.0.tar.gz && \
rm -f release-1.8.0.tar.gz && \
mv googletest-release-1.8.0 gtest)
3).Ubuntu12
该发布版已经成就,需要更新,但在folly/build/deps_ubuntu_12.04.sh提供了安装支持,需要升级所有需要的包。
4).Ubuntu13-14以上
需要以下的包(可以直接通过拷贝命令安装):
sudo apt-get install \
g++ \
automake \
autoconf \
autoconf-archive \
libtool \
libboost-all-dev \
libevent-dev \
libdouble-conversion-dev \
libgoogle-glog-dev \
libgflags-dev \
liblz4-dev \
liblzma-dev \
libsnappy-dev \
make \
zlib1g-dev \
binutils-dev \
libjemalloc-dev \
libssl-dev \
pkg-config
如果需要先进调试功能,需要安装以下模块:
sudo apt-get install \
libunwind8-dev \
libelf-dev \
libdwarf-dev
Ubuntu14及以上,在13中提出的包清单都需要安装,同时还包括:
sudo apt-get install \
libiberty-dev
确定包安装完后,请执行:
autoreconf -ivf
./configure
make
make check
sudo make install
以上,是官方文档的编译安装步骤。
接下来,给出本人一些经验和教训…………
1.首先,README中Ubuntu13给出的那些依赖库,很重要!尤其是boost!
请确定自己使用了apt-get install命令安装了正确的boost版本。
网上有许多博客给出的是下载源码编译安装,以及直接拷贝库的一些安装方法。不要使用!!谨记!!
首先,boost现在的发布版为1.64,folly需要的是1.55+版本,apt-get install安装的为1.58版本,可以使用apt-cache search boost查看选择可安装版本。
安装boost后,请使用ldconfig -v | grep boost查看一下链接库的清单:
2.其次,确认一下gtest的目录正确
folly*/folly/test/gtest/目录下,应该有两个文件夹及数个文件:
3.按README执行安装:
make完后会出现make[x]数个,然后离开目录,如果没有error,请接着执行make check。
整个过程大概需要10分钟左右。
make check的结果:
4.接着make install应该就可以了
3.ceres库安装
基本参照官网给出的文档流程就可以了:
http://www.ceres-solver.org/installation.html#section-customizing
注意,git clone的地址可能会拒绝连接,请手动下载tar包,版本是1.12或以上就可以了。
官网给出的安装步骤:
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev
# BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse and CXSparse (optional)
# - If you want to build Ceres as a *static* library (the default)
# you can use the SuiteSparse package in the main Ubuntu package
# repository:
sudo apt-get install libsuitesparse-dev
# - However, if you want to build Ceres as a *shared* library, you must
# add the following PPA:
sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687
sudo apt-get update
sudo apt-get install libsuitesparse-dev
以上部分,一般之前都配置好了,但以防万一还是建议大家走一遍
tar zxf ceres-solver-1.12.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.12.0
make -j3
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install
make test时会有一段需要等待较长时间,不是卡死。
100% tests passed, 0 tests failed out of 68
Total Test time (real) = 121.56 sec
这里基本没什么问题,install成功!
注意,请使用sudo make install,否则make install会出一个error,提示可能需要管理员特权。
配置完了以上需要的库和包后,我们回到Surround360,准备开始编译。
首先,进入Surround360*/surround360_render/
执行cmake -DCMAKE_BUILD_TYPE=Release
如果你认真阅读了上面的folly和ceres安装,这里应该不会有问题(如有问题,请根据提示查找库及包安装)。
一般来说,按前文配置完后,这边是正常通过。
接着,执行make指令:
7%我这里又报错了:fatal error:opencv2/calib3d.hpp
想到肯定是前面开了多个终端下载库的时候,下了没有安装。于是,圆润的滚回去安装opencv
12% fatal error:Eigen/Core,没有那个文件或目录
Eigen库没有安装,去官网下一个tar包:http://eigen.tuxfamily.org/index.php?title=Main_Page
这里给出基于install文档的安装步骤:
1.解压目录,得到的文件夹应为eigen-eigen-*
2.进入该文件夹,新建一个目录(比如build_dir)
3.cd进入该目录后,执行cmake(上一级source目录),因此可以为cmake ../或者是cmake /……/eigen-eigen-*
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ethan/eigen-eigen-5a0156e40feb/build_dir
4.make install
同上,出现
Maybe need administrative privileges.
使用sudo make install
make Surround360过程中,遇上报错,重新安装了需要的库之后,在编译时请注意!
务必!!重新执行一次cmake -DCMAKE_BUILD_TYPE=Release!然后再make!!(make clean之后)
最后,祝大家都能一次编译通过!