1、最终环境
最终安装的是openMVS-2.4.0版本的,openMVS-2.3.0的TextureMesh在生成obj时有问题。
2、安装 openMVS 2.3.0
2.1 下载安装
python
sudo apt install cmake
# 下载v2.3.0
git clone https://github.com/cdcseacave/openMVS.git
cd openMVS/
git submodule update --init --recursive
git checkout v2.3.0
mkdir make
cd make
#Run CMake:wo
cmake ..
2.2 boost错误
报错:
python
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:141 (find_package):
Could not find a package configuration file provided by "boost_iostreams"
(requested version 1.74.0) with any of the following names:
boost_iostreamsConfig.cmake
boost_iostreams-config.cmake
Add the installation prefix of "boost_iostreams" to CMAKE_PREFIX_PATH or
set "boost_iostreams_DIR" to a directory containing one of the above files.
If "boost_iostreams" provides a separate development package or SDK, be
sure it has been installed.
Call Stack (most recent call first):
/usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:258 (boost_find_component)
/usr/share/cmake-3.22/Modules/FindBoost.cmake:594 (find_package)
CMakeLists.txt:193 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
这个错误说明缺少boost库,用下面方法下载安装:
python
# 使用curl自动跟随重定向
curl -L -o boost_1_74_0.tar.bz2 "https://sourceforge.net/projects/boost/files/boost/1.74.0/boost_1_74_0.tar.bz2/download"
# 检查文件类型
file boost_1_74_0.tar.bz2
# 解压bz2格式
tar -xjf boost_1_74_0.tar.bz2
cd boost_1_74_0
# 编译安装
./bootstrap.sh --prefix=/usr/local
sudo ./b2 install
2.3 opencv错误
继续编译源码:
python
cd ~/code/openmvs/openMVS/make
cmake ..
又报错了:
python
CMake Error at CMakeLists.txt:218 (FIND_PACKAGE):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" with any
of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
解决方法
python
sudo apt-get update
sudo apt-get install -y libopencv-dev
报错:
python
The following packages have unmet dependencies:
libtbb2-dev : Conflicts: libtbb-dev but 2021.5.0-7ubuntu2 is to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
解决方法:
python
# 安装aptitude(更智能的依赖解析器)
sudo apt-get install -y aptitude
# 使用aptitude安装OpenCV
sudo aptitude install -y libopencv-dev
# aptitude会给出解决方案,通常选择第一个选项
验证安装
python
pkg-config --modversion opencv4
2.4 VCG错误
又报错:
python
CMake Error at build/Utils.cmake:225 (message):
VCG required, but not found: Please specify VCG directory using VCG_ROOT
env. variable
Call Stack (most recent call first):
build/Modules/FindVCG.cmake:23 (package_report_not_found)
libs/MVS/CMakeLists.txt:9 (FIND_PACKAGE)
解决方法:
python
宿主机下:
cd ~/colmap/colmap_deployer/code/openmvs/openMVS
git clone https://github.com/cnr-isti-vclab/vcglib.git
# docker中:
# ~/code/openmvs/openMVS# 目录下执行:
export VCG_ROOT=$(pwd)/libs/vcglib
2.5 boost库zstd问题
继续编译:
python
cmake ..
#Build:
cmake --build . -j4
#Install OpenMVS library (optional):
cmake --install .
到这里终于不报错了,正常执行了所有安装命令,但是在使用openmvs的时候又出问题了:
python
root@9dc64f6c8805:~/code/openmvs/openMVS/make/bin# ~/code/openmvs/openMVS/make/bin/DensifyPointCloud -h
/root/code/openmvs/openMVS/make/bin/DensifyPointCloud: symbol lookup error: /root/code/openmvs/openMVS/make/bin/DensifyPointCloud: undefined symbol: _ZN5boost9iostreams4zstd3runE
这个问题还是boost库安装时出现了隐藏的问题,解决方法如下:
步骤1:卸载现有Boost并重新编译
python
bash
# 1. 删除之前安装的Boost
sudo rm -rf /usr/local/lib/libboost*
sudo rm -rf /usr/local/include/boost
# 2. 进入Boost源码目录
cd ~/boost_1_74_0
# 3. 完全清理
./b2 --clean
rm -f b2
rm -f bjam
rm -f project-config.jam
rm -rf bin.v2
# 4. 重新配置,启用zstd支持
./bootstrap.sh --with-libraries=iostreams,program_options,system,filesystem,serialization --prefix=/usr/local
# 5. 编辑project-config.jam,添加zstd支持
cat >> project-config.jam << 'EOF'
using zstd : : <find-static-library>zstd ;
EOF
# 或者使用命令行参数
./b2 install \
cxxflags="-I/usr/include" \
linkflags="-L/usr/lib/x86_64-linux-gnu -lzstd" \
--with-iostreams \
--with-program_options \
--with-system \
--with-filesystem \
--with-serialization \
-j$(nproc) \
--prefix=/usr/local
步骤2:安装zstd开发库
python
# 确保zstd库已安装
sudo apt-get update
sudo apt-get install -y libzstd-dev
# 验证zstd安装
ls /usr/include/zstd.h
ls /usr/lib/x86_64-linux-gnu/libzstd*
步骤3:重新编译Boost(完整命令)
python
# 一行命令重新编译支持zstd的Boost
cd ~/boost_1_74_0
rm -rf bin.v2 stage
./bootstrap.sh --with-libraries=iostreams,program_options,system,filesystem,serialization
sudo ./b2 install \
variant=release \
link=shared \
runtime-link=shared \
threading=multi \
cxxflags="-std=c++14 -I/usr/include" \
linkflags="-lzstd" \
--prefix=/usr/local \
-j$(nproc)
步骤4:验证Boost是否支持zstd
python
# 检查Boost iostreams是否包含zstd
nm /usr/local/lib/libboost_iostreams.so.1.74.0 | grep -i zstd
# 或者编译测试程序
cat > test_boost_zstd.cpp << 'EOF'
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filter/zstd.hpp>
#include <iostream>
int main() {
std::cout << "Boost zstd test: OK" << std::endl;
return 0;
}
EOF
g++ -o test_boost_zstd test_boost_zstd.cpp \
-I/usr/local/include \
-L/usr/local/lib \
-lboost_iostreams \
-lzstd
./test_boost_zstd
步骤5:重新编译OpenMVS
python
# 清理并重新编译OpenMVS
cd ~/code/openmvs/openMVS/make
rm -rf *
# 重新配置,确保使用正确的Boost
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CUDA_ARCHITECTURES="86" \
-DBOOST_ROOT=/usr/local \
-DBoost_USE_STATIC_LIBS=OFF \
-DVCG_ROOT="$PWD/../libs/vcglib" \
-DCMAKE_CXX_FLAGS="-DIO_USE_JPEGXL=0"
# 编译
cmake --build . -j4
# 测试
./bin/DensifyPointCloud -h
步骤1:卸载现有Boost并重新编译和步骤3:重新编译Boost(完整命令)存在重复,可以精简一下,但是这里直接照着做也算是正常了,有机会再精简指令。
2.6 测试openMVS
测试命令:
python
# 创建输出目录
mkdir -p /root/code/colmap-test/sh24/openmvs_results
# 转换COLMAP数据为OpenMVS格式
/root/code/openmvs/openMVS/make/bin/InterfaceCOLMAP \
-i /root/code/colmap-test/sh24/dense \
-o /root/code/colmap-test/sh24/openmvs_results/scene.mvs \
--image-folder /root/code/colmap-test/sh24/dense/images \
--working-folder /root/code/colmap-test/sh24/openmvs_results
# 网格重建
/root/code/openmvs/openMVS/make/bin/ReconstructMesh \
/root/code/colmap-test/sh24/openmvs_results/scene.mvs \
-o /root/code/colmap-test/sh24/openmvs_results/scene_mesh.mvs \
--min-point-distance 2.0 \
--free-space-support 1 \
--thickness-factor 10 \
--decimate 0.5 \
--close-holes 30 \
--smooth 2
cd /root/code/colmap-test/sh24/openmvs_results
# 尝试保存为PLY格式
/root/code/openmvs/openMVS/make/bin/TextureMesh \
-i scene.mvs \
-m scene_mesh.ply \
-o scene_textured.ply \
--export-type ply \
--resolution-level 1
简化指令:
python
mkdir -p ~/code/colmap-test/pm43/openmvs_results
cd ~/code/colmap-test/pm43/openmvs_results
/root/code/openMVS-2.4.0/make/bin/InterfaceCOLMAP \
-i /root/code/colmap-test/pm43/dense \
-o scene.mvs \
--image-folder /root/code/colmap-test/pm43/dense/images \
--working-folder .
/root/code/openMVS-2.4.0/make/bin/ReconstructMesh \
scene.mvs \
-o scene_mesh.ply \
--min-point-distance 2.0 \
--free-space-support 1 \
--thickness-factor 10 \
--decimate 0.5 \
--close-holes 30 \
--smooth 2
/root/code/openMVS-2.4.0/make/bin/TextureMesh \
-i scene.mvs \
-m scene_mesh.ply \
-o scene_textured.ply \
--export-type ply \
--resolution-level 1
2.7 TextureMesh生成obj报错
注意用下面的命令会失败,可能是2.3.0这个版本的bug
python
/root/code/openMVS-2.4.0/make/bin/TextureMesh \
-i /root/code/colmap-test/sh24/openmvs_results/scene.mvs \
-m /root/code/colmap-test/sh24/openmvs_results/scene_mesh.ply \
-o /root/code/colmap-test/sh24/openmvs_results/scene_textured.obj \
--export-type obj \
--resolution-level 1
3、卸载2.3.0安装最新OpenMVS(失败可忽略)
python
# 安装nanoflann
sudo apt-get update
sudo apt-get install -y libnanoflann-dev
报JPEGXL相关错误:

jpegxl不是必要的库,可以像图中一样注释掉它
继续编译,又报错如下:
python
CMake Error at build/Utils.cmake:223 (message):
VCG required, but not found: Please specify VCG directory using VCG_ROOT
env. variable
Call Stack (most recent call first):
build/Modules/FindVCG.cmake:23 (package_report_not_found)
libs/MVS/CMakeLists.txt:9 (FIND_PACKAGE)
解决方法:
python
宿主机下:
cd ~/colmap/colmap_deployer/code/openmvs/openMVS
git clone https://github.com/cnr-isti-vclab/vcglib.git
# docker中:
# ~/code/openmvs/openMVS# 目录下执行:
export VCG_ROOT=$(pwd)/libs/vcglib
安装命令,注意结合自己的显卡指定CUDA_ARCHITECTURES否则会报cuda错误:
python
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CUDA_ARCHITECTURES="86" \
-DBOOST_ROOT=/usr/local \
-DBoost_USE_STATIC_LIBS=OFF \
-DVCG_ROOT="$PWD/../libs/vcglib" \
-DCMAKE_CXX_FLAGS="-DIO_USE_JPEGXL=0"
# 编译
cmake --build . -j4
# 测试
./bin/DensifyPointCloud -h
编译的时候报错了:
python
/root/code/openmvs/openMVS/libs/Common/Types.inl:3110:36: error: 'IMWRITE_JPEGXL_QUALITY' is not a member of 'cv'; did you mean 'IMWRITE_JPEG_QUALITY'?
/root/code/openmvs/openMVS/libs/Common/OBB.inl:483:58: error: 'SearchParameters' is not a member of 'nanoflann'; did you mean 'SearchParams'?
原因和解决方法:
opencv和nanoflann版本不对
安装4.8.0版本opencv
python
# 安装OpenCV 4.8+(支持JPEG XL)
sudo apt-get remove -y libopencv-dev
sudo apt-get autoremove -y
# 从源码编译OpenCV 4.8.0
cd ~
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.8.0
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
4、 用自带包管理工具(失败可跳过)
4.1 结果
失败了,在容器中很多库下载不下来,也会出现很多错误,干脆放弃用它,直接需要什么装什么,另外据说它下载的东西比较多也会更占空间。
4.2 基本环境安装
python
# 1. 安装curl等基础工具
sudo apt update
sudo apt install -y curl zip unzip tar
# 2. 安装编译工具
sudo apt install -y build-essential cmake git pkg-config
# 3. 安装可选的开发工具
sudo apt install -y autoconf automake libtool
# 4. 验证安装
curl --version
cmake --version
g++ --version
4.3 初始化vcpkg
python
git clone https://github.com/microsoft/vcpkg.git
cd ~/code/openmvs/vcpkg
# 现在应该可以正常初始化vcpkg了
./bootstrap-vcpkg.sh
export VCPKG_ROOT=$(pwd)
export PATH=$PATH:$VCPKG_ROOT
# 永久添加到bashrc
echo 'export VCPKG_ROOT="'$VCPKG_ROOT'"' >> ~/.bashrc
echo 'export PATH="$PATH:'$VCPKG_ROOT'"' >> ~/.bashrc
source ~/.bashrc
4.4 安装OpenMVS依赖
python
# 安装基础依赖(不带CUDA先测试)
./vcpkg install \
eigen3 \
opencv[core,contrib] \
cgal \
boost \
ceres \
glfw3 \
glew
# 如果需要CUDA,但要注意版本兼容
# OpenMVS可能需要特定CUDA版本,我们先测试无CUDA版本
vcpkg install openmvs[cuda]
继续报错,即使手动下载好gperf-3.3.tar.gz,还是自己安装吧,缺什么装什么:
python
error: building gperf:x64-linux failed with: BUILD_FAILED
See https://learn.microsoft.com/vcpkg/troubleshoot/build-failures?WT.mc_id=vcpkg_inproduct_cli for more information.
Elapsed time to handle gperf:x64-linux: 606 ms
Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+gperf
You can submit a new issue at:
https://github.com/microsoft/vcpkg/issues/new?title=%5Bgperf%5D%20build%20error%20on%20x64-linux&body=Copy%20issue%20body%20from%20%2Froot%2Fcode%2Fopenmvs%2Fvcpkg%2Finstalled%2Fvcpkg%2Fissue_body.md
5、重新创建容器安装openMVS-2.4.0:(成功)
5.1 源码编译boost
注意要带zstd编译项,否则报错:
python
# 使用curl自动跟随重定向
curl -L -o boost_1_74_0.tar.bz2 "https://sourceforge.net/projects/boost/files/boost/1.74.0/boost_1_74_0.tar.bz2/download"
# 检查文件类型
file boost_1_74_0.tar.bz2
# 解压bz2格式
tar -xjf boost_1_74_0.tar.bz2
cd boost_1_74_0
# 配置启用zstd
./bootstrap.sh --with-libraries=iostreams
./b2 -j$(nproc) --with-iostreams cxxflags="-I/usr/include" linkflags="-lzstd"
sudo ./b2 install
# 3. 更新库缓存
sudo ldconfig
sudo apt install -y libnanoflann-dev
通过下面方法解决:
sudo apt-get install -y aptitude
5.2 源码编译libjxl
python
# 1. 安装编译依赖
sudo apt update
sudo apt install -y \
git cmake build-essential \
libbrotli-dev libgif-dev libjpeg-dev libopenexr-dev \
libpng-dev libwebp-dev
# 2. 克隆libjxl源码
cd ~
git clone https://github.com/libjxl/libjxl.git --recursive
cd libjxl
# 3. 配置和编译
mkdir build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DJPEGXL_ENABLE_BENCHMARK=OFF \
-DJPEGXL_ENABLE_EXAMPLES=OFF \
-DJPEGXL_ENABLE_PLUGINS=OFF \
-DJPEGXL_ENABLE_VIEWERS=OFF \
-DJPEGXL_WARNINGS_AS_ERRORS=OFF
# 4. 编译和安装
make -j$(nproc)
sudo make install
sudo ldconfig
# 5. 验证安装
pkg-config --modname libjxl
5.3 配置nanoflann
编译的时候除了要让编译器能找到cmake文件,还需要加载到导出目录中,如果不配置也会报错,在cmake的时候也要对应配置:
python
# 删除有问题的配置文件
rm /root/code/nanoflann/nanoflannConfig.cmake
# 创建正确的配置文件
cat > /root/code/nanoflann/nanoflannConfig.cmake << 'EOF'
# nanoflann CMake configuration
cmake_minimum_required(VERSION 3.10)
# nanoflann is a header-only library
# Create an imported interface target
if(NOT TARGET nanoflann::nanoflann)
add_library(nanoflann::nanoflann INTERFACE IMPORTED)
set_target_properties(nanoflann::nanoflann PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/include"
)
endif()
# Set variables for compatibility
set(nanoflann_FOUND TRUE)
set(nanoflann_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include")
set(nanoflann_LIBRARIES nanoflann::nanoflann)
# Provide a function to check if nanoflann is available
function(nanoflann_check)
if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/include/nanoflann.hpp")
message(FATAL_ERROR "nanoflann.hpp not found in ${CMAKE_CURRENT_LIST_DIR}/include")
endif()
message(STATUS "Found nanoflann: ${CMAKE_CURRENT_LIST_DIR}/include")
endfunction()
EOF
5.4 源码编译opencv4.13.0
最终用的opencv4.13.0,否则没有IMWRITE_JPEGXL_QUALITY会报错,需要吧4.8.0卸载重装
python
原因和解决方法:
opencv和nanoflann版本不对
安装4.13.0版本opencv
# 安装OpenCV 4.13.0(支持JPEG XL)
sudo apt-get remove -y libopencv-dev
sudo apt-get autoremove -y
# 从源码编译OpenCV 4.13.0
cd ~
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.13.0
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
5.5 源码安装CGAL6.0.2
下载:https://github.com/CGAL/cgal/releases/tag/v6.0.2下源码:cgal-6.0.2.tar.gz
python
tar -xzvf cgal-6.0.2.tar.gz
cd cgal-6.0.2/
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
5.6 升级cuda toolkit
报错:
python
root@9e7078c3869a:~/code/openmvs/openMVS/make# make -j$(nproc)
[ 1%] Building CXX object libs/Common/CMakeFiles/Common.dir/cmake_pch.hxx.gch
[ 2%] Building CXX object libs/Common/CMakeFiles/Common.dir/Common.cpp.o
[ 6%] Building CXX object libs/Common/CMakeFiles/Common.dir/ConfigTable.cpp.o
[ 6%] Building CXX object libs/Common/CMakeFiles/Common.dir/Log.cpp.o
[ 6%] Building CXX object libs/Common/CMakeFiles/Common.dir/EventQueue.cpp.o
[ 6%] Building CXX object libs/Common/CMakeFiles/Common.dir/SML.cpp.o
[ 7%] Building CXX object libs/Common/CMakeFiles/Common.dir/Timer.cpp.o
[ 10%] Building CXX object libs/Common/CMakeFiles/Common.dir/Types.cpp.o
[ 11%] Building CXX object libs/Common/CMakeFiles/Common.dir/Util.cpp.o
[ 11%] Building CXX object libs/Common/CMakeFiles/Common.dir/UtilCUDA.cpp.o
[ 12%] Linking CUDA device code CMakeFiles/Common.dir/cmake_device_link.o
nvlink fatal : Could not open input file '/usr/lib/x86_64-linux-gnu/libpthread.a'
make[2]: *** [libs/Common/CMakeFiles/Common.dir/build.make:259: libs/Common/CMakeFiles/Common.dir/cmake_device_link.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:427: libs/Common/CMakeFiles/Common.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
方法之一就是升级cuda toolkit,我的 nvcc cuda 版本是 11.5,在网上查找问题的时候发现有人建议cuda要11.7以上,我安装了cuda toolkit 11.8
原文链接
5.6.1 卸载cuda11.5
python
# 卸载核心CUDA包和gcc/g++-10
apt-get purge -y \
nvidia-cuda-toolkit \
nvidia-cuda-toolkit-gcc \
gcc-10 g++-10
# 若有其他关联的CUDA依赖(如cuda-*),也可一并卸载(可选)
apt-get purge -y cuda* nvidia-*
apt-get autoremove -y
apt-get clean
5.6.2 装11.8
python
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
dpkg -i cuda-keyring_1.0-1_all.deb
apt-get update && \
apt-get install -y --no-install-recommends \
cuda-toolkit-11-8=11.8.0-1 \
libcudnn8=8.6.0.163-1+cuda11.8 \
libcudnn8-dev=8.6.0.163-1+cuda11.8
如果nvcc --version失败,按照下面方法处理:
python
# 编辑bashrc文件
vim ~/.bashrc
# 在文件末尾添加以下两行内容
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
# 保存退出(vim中按Esc,输入:wq回车)
# 让配置立即生效
source ~/.bashrc
# 刷新动态库缓存
ldconfig
# 验证
nvcc --version
5.7 安装gcc/g++
报错:
python
root@e741e0c718d3:~/code/boost_1_74_0# ./bootstrap.sh --prefix=/usr/local
Building Boost.Build engine with toolset gcc...
Failed to build Boost.Build build engine
Consult 'bootstrap.log' for more details
解决:
python
apt-get install gcc-10 g++-10
```python
## 5.8 配置vcglib
从http://vcglib.net/下载http://github.com/cnr-isti-vclab/vcglib/下的库文件
将vcglib拷贝到openMVS/libs文件夹下
# 5.8 安装
```python
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CUDA_ARCHITECTURES="86" -DBOOST_ROOT=/usr/local -DBoost_USE_STATIC_LIBS=OFF -DVCG_ROOT="$PWD/../libs/vcglib" -Dnanoflann_DIR=/root/code/nanoflann
cmake --build . -j4
cmake --install .
5.9 测试
python
# 普通指令测试:
./bin/DensifyPointCloud -h
# 接colmap结果测试
/root/code/bdm_main/SuperBuild/install/bin/OpenMVS/DensifyPointCloud "/task_2/opensfm/undistorted/openmvs/scene.mvs" --resolution-level 3 --dense-config-file "/task_2/opensfm/undistorted/openmvs/Densify.ini" --max-resolution 5280 --max-threads 78 --number-views-fuse 2 --sub-resolution-levels 2 --archive-type 3 -w "/task_2/opensfm/undistorted/openmvs/depthmaps" -v 0 --cuda-device -1
6 其它
python
https://blog.csdn.net/dongmen2345/article/details/112593749
https://blog.csdn.net/qq_17732497/article/details/105943788
realitycapture
Pix4D
https://github.com/ethz-asl/aerial_mapper