3D gaussian-splatting可视化SIBR_viewers在ubuntu20.04下的配置

本文承接于我的上篇3DGS在ubuntu下的环境配置:3D gaussian-splatting代码在ubuntu20.04 & CUDA11.8下的配置_3dgs cuda11.8-CSDN博客

参考&致谢

以下是我的参考文章,可能会对你们的问题有帮助,感谢他们:

【3DGS】Ubuntu20.04系统搭建3D Gaussian Splatting及可视化环境_ubuntu 3dgs安装-CSDN博客

Linux Ubuntu 20.04LTS安装OpenSSL步骤_ubuntu安装openssl-CSDN博客

ubuntu安装cmake的三种方法(超方便!)-CSDN博客

opencv编译与anaconda下lib冲突,屏蔽anaconda编译opencv_anaconda opencv冲突 lib-CSDN博客

在ubuntu下安装opencv4.1.0详细步骤_ubuntu22.04安装opencv4.10-CSDN博客

【已解决】Ubuntu 20.04 编译OpenCV 动态链接库指向版本不一致导致出错_ubuntu opencv ffi-CSDN博客

【已解决】ubuntu 16.04 源码编译opencv4.5.1 报错 “../../lib/libopencv_imgcodecs.so.4.5.0: undefined reference t”_ubuntu16.04 undefined reference to libfdt-CSDN博客

Ubuntu中安装openCV3.4.12编译过程中与Anaconda冲突_编译opencv-4.6之前我安装了anaconda3,系统库的路径被覆盖掉-CSDN博客

Linux Ubuntu 20.04LTS安装OpenSSL步骤_ubuntu安装openssl-CSDN博客

本文环境

my@test:~$ hostnamectl
Icon name: computer-desktop
Chassis: desktop
Operating System: Ubuntu 20.04.6 LTS
Kernel: Linux 5.15.0-117-generic
Architecture: x86-64

退出conda环境

建议退出conda环境,conda环境的libtiff.so等动态链接库可能会影响到opencv的安装

conda deactivate

(base) my@test:~/下载$ conda deactivate
my@test:~/下载$

Ubuntu中安装openCV3.4.12编译过程中与Anaconda冲突_编译opencv-4.6之前我安装了anaconda3,系统库的路径被覆盖掉-CSDN博客

openssl的安装

cmake的安装需要OpenSSL 的头文件和库文件,Ubuntu 20.04LTS 系统自带 OpenSSL ,但是这个OpenSSL 是没有<头文件.h>和<动态库文件.so及静态库文件.a>的,所以需要手动下载。

sudo apt-get install libssl-dev

my@test:~/下载$ sudo apt-get install libssl-dev

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成

...

此方法会把OpenSSL的头文件放在 “/usr/include/openssl” ,动态库文件(libssl.so、libcrypto.so)、静态库文件(libssl.a、libcrypto.a)均放在 “/lib/x86_64-linux-gnu”

未下载OpenSSL头文件、库文件,cmake安装会报以下错误:Could not find OpenSSL

cmake的安装

1. cmake下载

Download CMake cmake网址

点击上述链接进入gitlab页面可下载cmake指定版本,以及可查看安装过程的指令CMake / CMake · GitLabCMake, the cross-platform, open-source build system.icon-default.png?t=O83Ahttps://gitlab.kitware.com/cmake/cmake

本文使用cmake3.30.4 source源码版本

2. 解压
tar -xvzf cmake-3.30.4.tar.gz

my@test:~/下载$ tar -xvzf cmake-3.30.4.tar.gz
cmake-3.30.4/
cmake-3.30.4/.clang-format
cmake-3.30.4/.clang-tidy
cmake-3.30.4/Auxiliary/
cmake-3.30.4/Auxiliary/CMakeLists.txt
cmake-3.30.4/Auxiliary/bash-completion/

...

当然,如果是ubuntu桌面版,可以直接右击“提取到...”

3. 执行“文件检查&编译&安装”
cd cmake-3.30.4/
./bootstrap && make -j8 && sudo make install

my@test:~/下载$ cd cmake-3.30.4/

my@test:~/下载/cmake-3.30.4$ ./bootstrap && make -j8 && sudo make install
---------------------------------------------
CMake 3.30.4, Copyright 2000-2024 Kitware, Inc. and Contributors
Found GNU toolchain
C compiler on this system is: gcc   
C++ compiler on this system is: g++    
Makefile processor on this system is: make
g++ has setenv
g++ has unsetenv

...

---------------------------------------------
CMake has bootstrapped.  Now run make.
[  0%] Building C object Source/kwsys/CMakeFiles/cmsys.dir/ProcessUNIX.c.o
[  0%] Building C object Source/kwsys/CMakeFiles/cmsys.dir/Base64.c.o
[  0%] Building C object Source/kwsys/CMakeFiles/cmsys.dir/EncodingC.c.o

...

[  1%] Built target cmsys
[  2%] Built target cmsys_c
[  3%] Built target cmsysTestsC
[  3%] Built target testConsoleBufChild

cmake安装到了/usr/local/share/cmake-3.30路径

5. 软链接
sudo ln -sf /usr/local/bin/cmake /usr/bin/
6. 验证版本

my@test:~/下载/cmake-3.30.4$ cmake --version
cmake version 3.30.4

CMake suite maintained and supported by Kitware (kitware.com/cmake).

opencv的安装

1. 下载依赖
sudo apt-get install build-essential unzip pkg-config
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python3-dev
2. opencv下载

https://opencv.org/releases/ opencv下载

https://github.com/opencv/opencv_contrib/releases/tag/4.10.0 opencv_contrib下载

3. 解压
unzip opencv-4.10.0.zip
unzip opencv_contrib-4.10.0.zip

my@test:~/下载$ unzip opencv-4.10.0.zip 
Archive:  opencv-4.10.0.zip
71d3237a093b60a27601c20e9ee6c3e52154e8b1
  creating: opencv-4.10.0/
  inflating: opencv-4.10.0/.editorconfig

...

当然,如果是ubuntu桌面版,可以直接右击“提取到...”

4.移动opencv_contrib

将opencv_contrib-4.10.0移到opencv-4.10.0文件夹下

5. cmake链接

cmake opencv_contrib-4.10.0会下载外网额外的组件,注意网速慢

cd opencv-4.10.0/
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.10.0/modules ..

my@test:~/下载/opencv-4.10.0/build$ cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.10.0/modules ..
CMake Warning (dev) at CMakeLists.txt:127 (enable_language):
  project() should be called prior to this enable_language() call.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- The CXX compiler identification is GNU 9.4.0
-- The C compiler identification is GNU 9.4.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /bin/c++ - skipped

如果有报错信息如下:

CMake Error at CMakeLists.txt:10 (message):
  

  FATAL: In-source builds are not allowed.

         You should create a separate directory for build files.

-- Configuring incomplete, errors occurred!

则需要先删除cmake缓存

rm ../CMakeCache.txt
6. 编译
make -j8

my@test:~/下载/opencv-4.10.0/build$ make -j8
[  0%] Built target opencv_videoio_plugins
[  0%] Built target opencv_dnn_plugins
[  0%] Built target opencv_highgui_plugins

...

报错1

报错信息:

fatal error: openjpeg.h: No such file or directory

原因是找不到openjpeg文件,我的解决是修改报错信息中给的.hpp文件:

先locate openjpeg.h,输出/usr/include/openjpeg-2.3/openjpeg.h

修改.hpp文件的引入

//#include <openjpeg.h>
#include </usr/include/openjpeg-2.3/openjpeg.h>

报错2

/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0: undefined reference to `TIFFReadDirectory@LIBTIFF_4.0'
//usr/lib/libgdal.so.20: undefined reference to `TIFFLastDirectory@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0: undefined reference to `TIFFWriteEncodedStrip@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0: undefined reference to `TIFFIsTiled@LIBTIFF_4.0'
//usr/lib/libgdal.so.20: undefined reference to `TIFFSwabArrayOfShort@LIBTIFF_4.0'

在确保libtiff-dev已安装的情况下,sudo apt-get install libtiff4-dev

cmake指令增加 -D BUILD_TIFF=ON

7. 安装opencv
sudo make install

my@test:~/下载/opencv-4.10.0/build$ sudo make install 
[  0%] Built target opencv_dnn_plugins
[  0%] Built target opencv_highgui_plugins
[  2%] Built target libopenjp2
[  2%] Built target opencv_videoio_plugins

...

Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/share/licenses/opencv4/ippicv-readme.htm

SIBR_viewers的安装

GitHub - graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"

gs谈到了SIBR的安装,但是我的安装过程有报错

1. 依赖安装
sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev

my@test:~/postg/thesis/gaussian-splatting/SIBR_viewers$ sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成 

2. 切换SIBR的分支

如果是ubuntu20.04,还需要切换SIBR的分支,如果是ubuntu22.04则不需要

cd SIBR_viewers
git checkout fossa_compatibility

my@test:~/postg/thesis/gaussian-splatting/SIBR_viewers$ git checkout fossa_compatibility
M    CMakeLists.txt
M    src/projects/remote/CMakeLists.txt
已经位于 'fossa_compatibility'
您的分支与上游分支 'origin/fossa_compatibility' 一致。

3. cmake链接
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release
报错1

中途可能卡顿,是因为在下载其他依赖组件。我的解决方法是换一个cmake版本(比如使用sudo apt-get install cmake),就成功了

--Populating library imgui...

报错2

报错信息:

CMake Error in src/core/system/CMakeLists.txt:
  Imported target "Boost::system" includes non-existent path

    "/include"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.”

直接有效的解决方法是创建/include文件夹,并将boot文件夹复制到include文件夹下

locate boost/version.hpp  ##定位boost文件夹,我的boost文件是在 /usr/include/boost

sudo mkdir /include

sudo cp -r /usr/include/boost/ /include/ ##复制文件夹

4. 编译安装
cmake --build build -j24 --target install
报错

报错信息:

In file included from /home/my/postg/thesis/gaussian-splatting/SIBR_viewers/src/./core/graphics/Utils.hpp:15,
                 from /home/my/postg/thesis/gaussian-splatting/SIBR_viewers/src/core/graphics/Utils.cpp:14:
/home/my/postg/thesis/gaussian-splatting/SIBR_viewers/src/./core/graphics/Config.hpp:29:12: fatal error: opencv2/opencv.hpp: 没有那个文件或目录
   29 | #  include <opencv2/opencv.hpp>
      |            ^~~~~~~~~~~~~~~~~~~~
compilation terminated.

解决方法:c++ 中——fatal error: opencv2/opencv.hpp: No such file or directory #include <opencv2/opencv.hpp>_opencv2: no such file or directory #include <openc-CSDN博客

至此,SIBR安装完毕

SIBR运行

3D gaussian-splatting代码在ubuntu20.04 & CUDA11.8下的配置_3d gaussian splatting 环境搭建 ubuntu-CSDN博客

中的训练结果运行,训练结果的目录结构如下:

my@test:~/postg/thesis/gaussian-splatting/data$ tree output
output
    ├── cameras.json
    ├── cfg_args
    ├── input.ply
    └── point_cloud
        ├── iteration_30000
        │   └── point_cloud.ply
        └── iteration_7000
            └── point_cloud.ply

4 directories, 5 files

1. 运行SIBR
cd install/bin
./SIBR_gaussianViewer_app -m /home/my/thesis/gaussian-splatting/data/output/
报错1

报错信息:

my@test:~/thesis/gaussian-splatting/SIBR_viewers/install/bin$ ./SIBR_gaussianViewer_app -m /home/my/thesis/gaussian-splatting/output/

./SIBR_gaussianViewer_app: error while loading shared libraries: libwebp.so.7: cannot open shared object file: No such file or directory

(1)查看依赖的动态链接库,发现部分没链接上

ldd ./SIBR_gaussianViewer_app

my@test:~/thesis/gaussian-splatting/SIBR_viewers/install/bin$ ldd ./SIBR_gaussianViewer_app

        libwebp.so.7 => not found
        libLerc.so => not found
        libjpeg.so.9 => not found
        libdeflate.so.0 => not found

(2)手动创建链接,先找到动态链接库,如果没有就sudo apt-get install ...

locate libwebp.so.7

my@test:~/thesis/gaussian-splatting/SIBR_viewers/install/bin$ locate libwebp.so.7

/home/my/anaconda3/lib/libwebp.so.7

(3)然后将.so复制到lib中

cp /home/my/anaconda3/lib/libwebp.so.7 /home/my/thesis/gaussian-splatting/SIBR_viewers/install/lib/

my@test:~/thesis/gaussian-splatting/SIBR_viewers/install/bin$ cp /home/my/anaconda3/lib/libwebp.so.7 /home/my/thesis/gaussian-splatting/SIBR_viewers/install/lib/

(4)再调用 ldd ./SIBR_gaussianViewer_app 查看动态库是否链接上

报错2

报错信息:

my@test:~/thesis/gaussian-splatting/SIBR_viewers/install/bin$ ./SIBR_gaussianViewer_app -m /home/my/thesis/gaussian-splatting/data/output/

./SIBR_gaussianViewer_app: /usr/local/lib/libtiff.so.5: no version information available (required by /lib/x86_64-linux-gnu/libopencv_imgcodecs.so.4.2)
./SIBR_gaussianViewer_app: /usr/local/lib/libtiff.so.5: no version information available (required by /lib/libgdal.so.26)
./SIBR_gaussianViewer_app: /usr/local/lib/libtiff.so.5: no version information available (required by /lib/x86_64-linux-gnu/libpoppler.so.97)
./SIBR_gaussianViewer_app: /usr/local/lib/libtiff.so.5: no version information available (required by /lib/x86_64-linux-gnu/libgeotiff.so.5)
[SIBR] --  INFOS  --:    Initialization of GLFW
[SIBR] ##  ERROR  ##:    FILE /home/my/thesis/gaussian-splatting/SIBR_viewers/src/core/graphics/Window.cpp
            LINE 30, FUNC glfwErrorCallback
            GLX: Failed to create context: GLXBadFBConfig
terminate called after throwing an instance of 'std::runtime_error'
  what():  See log for message errors
已放弃 (核心已转储)

(1)是因为OpenGL的版本问题,解决如下,查看OpenGL的版本:

sudo apt install mesa-utils -y
glxinfo | grep OpenGL

my@test:~/thesis/gaussian-splatting/SIBR_viewers/install/bin$ glxinfo | grep OpenGL
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 12.0.0, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 21.2.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.1 Mesa 21.2.6
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 21.2.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

其中OpenGL core profile version string: 4.5,则直接指令带上MESA_GL_VERSION_OVERRIDE=4.5即可

MESA_GL_VERSION_OVERRIDE=4.5 ./SIBR_gaussianViewer_app -m /home/my/thesis/gaussian-splatting/output/

可视化结果

键位:qweasd控制平移,uiojkl控制旋转

q下,e上,w前进,s后退

选择trackball,可以用鼠标进行旋转

这个ubuntu环境下的可视化配置耗费我很多时间,直接在windows上可视化更方便,也早已实现。我也深刻理解了奥卡姆剃刀原则--“如无必要,勿增实体”,谨记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值