surround360是facebook开源的一套集采集,渲染与一体的全景内容制作解决方案,其中使用到了诸多开源库,花了几天时间才把它跑通,下面就记录一下其中的一些注意事项。

项目介绍与测试样例

  • 官网:https://facebook360.fb.com/facebook-surround-360/
  • 开源代码:https://github.com/facebook/Surround360
  • 测试样例:http://surround360.hacktv.xyz/sample/sample_dataset.zip

环境配置

  • 操作系统: ubuntu 16.04 (其他版本会多很多坑,可以考虑使用虚拟机,我就是用的WMware虚拟机
  • python: ubuntu系统自带,python 2.7
  • 其他:内存8G,硬盘40G。(在编译中间如果内存比较小可能会比较慢或者出错

编译

  • 官方指南:https://github.com/facebook/Surround360/tree/master/surround360_render
  • 其他重要参考:http://blog.csdn.net/sunyolanda_cs/article/details/52448399

重要依赖库简介

  • gflags/glog/gtest: google开源的命令行解析库,应用程序日志库,C++单元测试框架。
  • folly: facebook的C++底层库,对boost的扩展和进一步封装。
  • ceres: 解决优化问题的数值计算库。(google从2010年开始使用)
  • opencv: Intel的计算机视觉库。(视觉研究人员必备技能)
  • ffmpeg: 视频处理库。集音/视频采集,编码/解码/转码,推流,播放等功能为一体的开源库,音视频相关人员必备,市面上的播放器基本都是拿它稍微改一下就直接用了。
  • colmap: 实现Structure-from-Motion (SfM) 和 Multi-View Stereo (MVS) 的开源库。
  • Goory: 一个可以很容易把python的命令行输入转化为图形界面的开源库。
  • PIL:python图像处理库(基本算是官方的图像处理库了)
  • LLVM/Halide: 用于程序优化的两个库。LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time)。Halide基于LLVM,可以让我们使用简单的方法写出高性能的图像处理算法。(加入这两个库之后代码编译会慢许多,而且surround360中有一个程序(Unpaker)是依赖于这两个库的,虽然指导手册中这两个是可选的,不过建议不要跳过)。

编译过程中的一些小BUG

  1. 多线程make的问题: 由于有几个库编译非常耗时,所以可以考虑使用多线程make(make -j8使用8个线程编译),但是事实证明多数程序猿在编写makefile或者cmakelist时并没有好好考虑多个target的依赖性问题,我在编译过程中遇到好几次使用多线程编译失败的情况,所以,如果你在使用多线程编译是出现了error,可以实时单线程。
  2. **.so not found: 虽然编译指南已经尽可能把依赖库写出来了,但是还有可能缺失一些库,如果编译过程中发现一些库缺失,那么就将它装上:使用apt-get或者pip。或者检查 边境变量LD_LIBRARY_PATH,看看是不是路径没有加进去。
  3. LLVM使用官方文档中的编译方法似乎会失败,参考这里:http://blog.csdn.net/fan2273/article/details/76439042
  4. 如果在make时候出现错误,错误中包含”Permission Denied”,说明是make的权限不够,请使用sudo make.

样例测试

软件运行

  1. 编译成功之后,在surround360_render/bin目录下会有14个二进制文件,script文件夹中的脚本会来调用这里的二进制文件。

  2. surround360_render/script文件夹下是python脚本,在安装了wxpython之后,可以以图形界面呈现。

    sudo pip install -U \
    -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \
    wxPython
    cd surround360_render/script
    python run_all.py

    出现如下图形界面

    到这里说明我们的程序编译运行都没有问题了。

样例使用

  • 样例下载地址:http://surround360.hacktv.xyz/sample/sample_dataset.zip
  • 重要参考: http://blog.csdn.net/sunyolanda_cs/article/details/52448606

  1. 说明:这里facebook只给出了两帧的数据,而且是unpack之后的数据,所以如果我们要得到全景图,只需要执行渲染那一步。也就是软件中的step2。
  2. 参数说明
参数 说明
Data Directory 数据流文件(把多路数据压缩为一路数据,这一路数据就是bin文件,猜测)
Des Directory 输出文件夹,包括raw 图像,rgb图像,程序配置,蒙版,log,全景图输出,cube映射输出都在这里
Start Frame/ Frame Count 渲染的帧数
Quality 输出视频/全景图的分辨率
Cubemap Format 立方体映射的格式,暂时不清楚区别
Cudamap Face Width/Height 全景图立方体映射每一个面的宽高
save_debug_images/save_raw 是否保存程序的一些中间输出,是否保存bmp格式图像
steps_unpack 是否执行第一步,也就是将bin文件解压为rgb文件
steps_render 是否执行第二步,也就是将多张rgb渲染为双目立体全景图
steps_ffmpeg 是否执行第三步,将多帧双目立体全景图使用ffmpeg合成为一个视频流
enable_top/enable_bottom 是否添加顶部/底部的摄像头(这三个相机是鱼眼镜头,顶部一个,底部两个)
enable_pole_removal 是否使用去相机支架算法(底部两个相机,一个被相机支架挡住的部分另一个可以看到,通过融合可以将支架在输出中去掉)
dryrun 不执行step,三个步骤都不执行
verbose 还不是很懂这个参数是什么意思

3. 参数配置
拼接渲染一帧8K双目立体全景图的配置如下图所示

- step2实际上并没有用到Data Directory中的文件夹,但是还是要给一个文件夹。
- 新建的output 文件夹中有如下的目录结构,其中cam一共是到16。png图片来自samples_dataset/vid/000000/isp_out.
- 点击start就开始拼接渲染,在i7@4.0G的机子上大约需要45s.

output|--rgb|--cam0  |--000000.png|--cam1|--000000.png|--cam2|--000000.png|--cam3|--000000.png|--cam4|--000000.png|--cam5|--000000.png|--cam6|--000000.png
  1. 运行结果

    • output文件夹
    • eqr_frames
    • cube_frames

facebook surround360 环境配置,编译,测试(生成双目立体全景图)相关推荐

  1. YOLOv4 资源环境配置和测试样例效果

    YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...

  2. 【转载】VINS-Mono环境配置与测试笔记

    VINS-Mono环境配置与测试笔记 标签: SLAM VINS-mono 本文转载自: VINS-Mono环境配置与测试笔记 error:cv_bridge---opencv和ros连接起来的桥 1 ...

  3. VINS-Mono环境配置与测试笔记

    VINS-Mono环境配置与测试笔记 标签: 旭 linux SLAM 1.简介 VINS-Mono和VINS-Mobile是香港科技大学沈劭劼团队开源的单目视觉惯导SLAM方案.是基于优化和滑动窗口 ...

  4. USRP环境配置及测试

    USRP环境配置及测试 文章目录 **USRP环境配置及测试** **安装Ubuntu18.04(非虚拟机)** **安装UHD** **安装GNU Radio** **USRP B210测试** * ...

  5. Direct Sparse Mapping DSM (一) 源代码环境配置编译

    Direct Sparse Mapping DSM (一) 源代码环境配置&编译 愿天下学子都可以找到属于自己学习某项技能的动力:对于我来说,学习SLAM相关算法,最大的动力就是能亲手运行代码 ...

  6. Windows10 + Visual Studio 2017 + CMake +OpenCV编译、开发环境配置及测试

    由于最近需要使用OpenCV,本人需要在自己的PC上使用OpenCV,因此最近一直在研究如何使用Visual Studio编译OpenCV源代码并搭建开发环境,折腾了很长时间,查阅了很多相关资料,终于 ...

  7. 点云目标检测BRNET || 1. 基于MMDetection的BRNet工程环境配置与测试

    1. BRNET 的环境配置 工程链接:https://github.com/cheng052/BRNet 改工程是基于MMDetection3D的框架下实现的,所以在配置环境时,需要先安装MMDet ...

  8. OpenWrt 硬件 环境配置编译

    文章目录 前言 硬件 OpenWrt官网 环境配置源码下载编译 刷机 微信公众号 前言 OpenWrt是Linux的一个发行版, 主流的路由器固件, 2019年11月10号release了 18.06 ...

  9. Linux环境配置编译orange,orangepi zero2编译环境搭建及传感器测试

    一.编译环境搭建及版本镜像编译 我这里使用的是官方手册上提供的linux SDK,包括uboot.linux内核及根文件系统均是orangePI官方的代码包,但在使用的一开始,我就遇到一个让人比较郁闷 ...

最新文章

  1. 何杰月c语言课程,北京西城区教育科研月:学科核心素养的教学探索
  2. hbase读写流程及缓存机制
  3. 【视频】vue表单提交
  4. C# Barrier类
  5. .NET Core技术研究-主机
  6. Unity3d 札记-Let's try shooting 知识点汇总
  7. linuxPci驱动获取指定设备bus、device以及devfn数据方式
  8. c语言输入输出重定向到串口,关于printf重定向到串口的问题分析 - 全文
  9. vs2005/vs2008 快捷键【转】
  10. python实现求两个数的最大公因数
  11. c语言mud游戏制作,MUD游戏制作工具下载
  12. latex IEEEtran bib参考文献title双引号
  13. 如何让3ds Max 2016导入smd文件
  14. 世界名著《平凡的世界》读后感3800字范文
  15. 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
  16. android如何获取网络的状态码,Android RxJava+Retrofit网络异常、状态码统一处理
  17. SpringCloud之Eureka客户端服务启动报Cannot execute request on any known server解决
  18. 地质灾害监测预警系统解决方案
  19. 超大型Oracle数据库设计实例
  20. mapgis坡度分析_基于ArcGIS、MapGIS对岩溶石漠化与坡度的相关性分析

热门文章

  1. vue中使用axios post上传头像/图片并实时显示到页面
  2. 23.模拟拖动登录框效果
  3. w8系统的wmi服务器,Delphi通过WMI获取系统信息
  4. PDF转CAD怎么弄?PDF文件转换快速入门
  5. 踩坑记--hexo中加入音乐
  6. 零基础学习web前端开发应该先学习什么
  7. 名人堂:网络缔造者—互联网之父VintonG.Cerf
  8. 【转】蔡文胜:微博的开放和公正性给开发者更好机会
  9. h5网站模板_80个懒人模板网站,我全部整理在这里了
  10. 为何说买5G手机只能买iPhone,不能买国产5G手机?