Ubuntu20.04下Ceres和g2o库安装全攻略:从依赖安装到编译避坑

Ubuntu20.04安装Ceres库 ceres真难安装。 阅读详情

Ubuntu 20.04 环境下 C++ 优化库实战部署:Ceres与g2o的深度配置与工程化指南

在机器人、自动驾驶和三维视觉领域,后端优化是构建精准地图与定位的核心。许多开发者和研究者初次踏入这片领域时,往往会被两个名字所吸引:Ceres Solver 和 g2o。它们如同优化世界的“倚天剑”与“屠龙刀”,一个以通用非线性最小二乘求解见长,另一个则专精于图优化框架。然而,在Ubuntu 20.04这个长期支持版本上,将它们从源码顺利编译并集成到自己的项目中,却远非几条命令那么简单。依赖版本冲突、编译选项的微妙差异、系统路径的配置,每一个环节都可能成为项目启动前的“拦路虎”。本文旨在为你提供一份超越普通安装教程的深度实战指南,不仅告诉你如何安装,更会剖析背后的原理,分享从依赖管理到编译调优,再到工程集成的全链路经验,目标是让你在Ubuntu 20.04上建立起一个稳定、高效且易于维护的优化算法开发环境。

1. 环境深度剖析与系统性准备

在动手敲下第一条安装命令之前,理解你的系统环境至关重要。Ubuntu 20.04 LTS (Focal Fossa) 提供了相对稳定的软件库,但这也意味着其默认仓库中的某些库版本可能并非最新。对于Ceres和g2o这类活跃开发的项目,我们需要在“系统稳定性”与“功能前沿性”之间做出权衡。

首先,更新你的系统包列表并升级现有软件包,这是一个良好的起点:

sudo apt update && sudo apt upgrade -y

接下来,我们需要安装一系列构建工具和基础依赖。这些工具是编译任何C++项目的基石:

sudo apt install -y build-essential cmake git pkg-config
  • build-essential:包含了GCC编译器、make等核心工具链。
  • cmake:Ceres和g2o都使用CMake作为构建系统,它是现代C++项目的标配。
  • git:用于从GitHub克隆源代码。
  • pkg-config:帮助编译器查找库文件和头文件。

一个常被忽略但极其重要的步骤是检查和管理系统中的多版本库。例如,你的系统可能同时存在多个版本的Python或GCC。使用update-alternatives命令可以清晰地查看和管理它们:

# 查看可用的GCC版本
sudo update-alternatives --config gcc
# 查看可用的Python3版本
sudo update-alternatives --config python3

确保你选择了与项目要求兼容的版本。对于Ubuntu 20.04,默认的GCC 9通常是安全的。

2. Ceres Solver:非线性最小二乘求解器的精装部署

Ceres Solver由Google开发,以其鲁棒性、速度和丰富的接口著称。它的安装过程相对标准,但细节决定成败。

2.1 依赖库的精准安装与版本考量

Ceres依赖于一系列数学和工具库。直接使用apt安装是最快捷的方式,但让我们理解每一个依赖的作用:

sudo apt install -y libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev

注意:libgtest-dev通常用于编译和运行Ceres自带的测试,如果你不打算进行单元测试,可以省略。但安装它有助于验证编译是否正确。

让我们通过一个表格来快速理解这些核心依赖:

依赖库主要功能在Ceres中的作用
libeigen3-dev高性能C++模板库,用于线性代数矩阵运算的核心,Ceres重度依赖Eigen。
libsuitesparse-dev稀疏矩阵处理算法套件(包含SuiteSparse)提供稀疏Cholesky分解(如CHOLMOD)等高级求解器。
libgoogle-glog-devGoogle的日志库输出详细的求解过程日志,便于调试。
libgflags-devGoogle的命令行标志解析库处理Ceres求解器及示例程序中的命令行参数。
libatlas-base-dev自动调优线性代数软件库提供可选的BLAS/LAPACK实现,加速稠密矩阵运算。

关键点:libsuitesparse-dev 是安装中最容易出问题的依赖之一。确保它被正确安装,它包含了Ceres在解决大规模稀疏问题时所需的cxsparse和cholmod等组件。

2.2 源码获取与编译配置的艺术

不建议使用Ubuntu仓库中预编译的libceres-dev包,因为它可能版本较旧且功能受限。从GitHub获取最新稳定版源码是推荐做法。

# 克隆Ceres的源代码仓库
git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
# 切换到最新的稳定标签,例如2.1.0(请查阅GitHub releases页面获取最新版本)
git checkout 2.1.0

现在,进入经典的CMake构建流程。build目录的创建是一个好习惯,它保持了源码树的整洁(Out-of-source build)。

mkdir build && cd build

接下来是配置阶段,这里有一些高级选项可以显著影响Ceres的性能和功能:

cmake .. \
  -DCMAKE_BUILD_TYPE=Release \
  -DBUILD_EXAMPLES=OFF \
  -DBUILD_TESTING=OFF \
  -DEIGENSPARSE=ON \
  -DCXX11=ON \
  -DCMAKE_INSTALL_PREFIX=/usr/local
  • -DCMAKE_BUILD_TYPE=Release:启用编译器优化,生成性能最优的发布版本。调试时可用Debug。
  • -DBUILD_EXAMPLES=OFF:如果你不需要示例程序,可以关闭以加快编译速度。
  • -DBUILD_TESTING=OFF:同上,关闭测试构建。
  • -DEIGENSPARSE=ON:强制使用Eigen的稀疏模块,这通常是好的。
  • -DCXX11=ON:确保使用C++11标准。
  • -DCMAKE_INSTALL_PREFIX=/usr/local:指定安装路径。/usr/local是用户级安装的标准位置。

提示:如果CMake报告找不到某个依赖(如SuiteSparse),你可以使用-D<PackageName>_DIR参数手动指定其CMake配置文件的路径。例如:-DSuiteSparse_DIR=/usr/lib/x86_64-linux-gnu/cmake/suitesparse/。

2.3 编译、安装与系统集成

配置成功后,开始编译。-j参数指定并行编译的作业数,通常设置为CPU核心数,以最大化利用计算资源。

make -j$(nproc) # $(nproc)会自动获取你的CPU核心数

编译过程可能需要几分钟。完成后,执行安装命令,这会将库文件、头文件等复制到CMAKE_INSTALL_PREFIX指定的目录(如/usr/local)。

sudo make install

最后,更新系统的动态链接器缓存,确保新安装的库能被找到:

sudo ldconfig

验证安装:创建一个简单的测试程序test_ceres.cc,尝试包含Ceres头文件并链接。如果能成功编译并运行一个简单的优化问题,则证明安装成功。

3. g2o:图优化框架的定制化安装与疑难排解

g2o(General Graph Optimization)是一个基于图模型的通用优化框架,在SLAM中应用极广。它的依赖更多样,安装过程也可能更曲折。

3.1 处理复杂的依赖关系

g2o的依赖包括图形界面、数学库和稀疏求解器。

sudo apt install -y qt5-qmake qt5-default libqglviewer-dev-qt5 \
  libsuitesparse-dev libcxsparse3 libcholmod3 libeigen3-dev \
  libsuitesparse-dev libblas-dev liblapack-dev
  • Qt5相关 (qt5-qmake, qt5-default, libqglviewer-dev-qt5):用于编译g2o的可视化工具。如果你确定不需要GUI(例如在无头服务器上),可以通过CMake选项关闭,从而避免安装这些依赖。
  • SuiteSparse相关:与Ceres类似,g2o也需要它来处理稀疏矩阵。
  • BLAS/LAPACK:线性代数基础运算库。

3.2 源码编译与关键配置选项

同样,我们从GitHub获取源码并切换到稳定分支。

git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
git checkout master # 或最新的稳定tag,如 20230223_git
mkdir build && cd build

g2o的CMake配置选项更为丰富,允许你进行深度定制:

cmake .. \
  -DCMAKE_BUILD_TYPE=Release \
  -DG2O_BUILD_EXAMPLES=OFF \
  -DG2O_BUILD_APPS=ON \ # 构建应用程序(如g2o_viewer)
  -DG2O_USE_OPENGL=ON \
  -DG2O_USE_OPENMP=ON \ # 启用OpenMP并行,提升性能
  -DEIGEN3_FOUND=ON \
  -DCMAKE_INSTALL_PREFIX=/usr/local

一个常见的“坑”:g2o可能会与系统已安装的旧版Eigen发生冲突。如果遇到Eigen相关错误,可以尝试强制指定Eigen的路径:

-DEIGEN3_INCLUDE_DIR=/usr/include/eigen3

另一个潜在问题是Qt5版本。Ubuntu 20.04默认的Qt5版本是5.12。如果CMake找不到Qt5,可以尝试安装qtbase5-dev包,或显式指定Qt5的路径。

3.3 解决编译错误与安装后步骤

编译命令与Ceres类似:

make -j$(nproc)

如果编译过程中出现错误,请仔细阅读错误信息。常见问题包括:

  1. 找不到QGLViewer:确保libqglviewer-dev-qt5已安装。有时库文件命名可能略有不同,需要手动创建符号链接或修改CMake文件。
  2. C++标准不兼容:g2o较新版本需要C++14或更高标准。在CMakeLists.txt中或通过CMake命令(-DCMAKE_CXX_STANDARD=14)进行设置。
  3. 符号重复定义:可能是由于多个版本的库冲突。确保清理旧的构建目录(rm -rf build)重新开始。

编译成功后,进行安装:

sudo make install
sudo ldconfig

验证g2o安装:尝试运行g2o提供的命令行工具或查看安装的文件:

# 查看g2o的头文件和库是否在标准路径下
ls /usr/local/include/g2o/
ls /usr/local/lib/libg2o_*.so

4. 工程化集成:在CMake项目中优雅地使用Ceres与g2o

安装完成只是第一步,如何在你自己的CMake项目中无缝使用它们,才是真正的挑战。这里分享一种稳健的配置方法。

4.1 编写健壮的FindPackage脚本与现代CMake集成

对于Ceres,由于其提供了优秀的CMake配置包,集成非常简单。在你的项目CMakeLists.txt中:

cmake_minimum_required(VERSION 3.10)
project(MySLAMProject)

set(CMAKE_CXX_STANDARD 14)

# 查找Ceres库
find_package(Ceres REQUIRED)

# 添加你的可执行文件
add_executable(my_app main.cpp)

# 将Ceres的库和头文件路径链接到你的目标
target_link_libraries(my_app Ceres::ceres)

对于g2o,情况稍微复杂,因为它可能没有提供完全兼容的CMake配置包。一种可靠的方法是使用find_library和find_path:

# 查找g2o的核心库及其组件
find_path(G2O_INCLUDE_DIR g2o/core/base_vertex.h
          PATHS /usr/local/include /usr/include)
find_library(G2O_CORE_LIB NAMES g2o_core
             PATHS /usr/local/lib /usr/lib)
find_library(G2O_STUFF_LIB NAMES g2o_stuff
             PATHS /usr/local/lib /usr/lib)
# ... 查找其他需要的g2o组件库,如g2o_solver_cholmod, g2o_types_sba等

if(G2O_INCLUDE_DIR AND G2O_CORE_LIB AND G2O_STUFF_LIB)
    message(STATUS "Found g2o: ${G2O_INCLUDE_DIR}")
    add_library(g2o INTERFACE IMPORTED)
    target_include_directories(g2o INTERFACE ${G2O_INCLUDE_DIR})
    target_link_libraries(g2o INTERFACE
        ${G2O_CORE_LIB}
        ${G2O_STUFF_LIB}
        # ... 链接其他找到的g2o库
        )
else()
    message(FATAL_ERROR "g2o not found!")
endif()

# 在你的目标中使用
target_link_libraries(my_app g2o)

4.2 依赖管理与容器化建议

为了避免“在我的机器上可以运行”的问题,考虑使用容器技术(如Docker)来固化你的开发环境。创建一个Dockerfile,将上述所有安装步骤脚本化,可以确保团队每个成员以及生产环境的一致性。

FROM ubuntu:20.04

# 安装系统依赖、Ceres、g2o...
RUN apt-get update && apt-get install -y ... # 所有上述apt命令
RUN git clone ... && cd ... && mkdir build ... # 所有编译安装步骤

# 设置工作目录和默认命令
WORKDIR /workspace
CMD ["/bin/bash"]

此外,对于更复杂的项目,可以考虑使用高级包管理器如vcpkg或conan来管理Ceres和g2o的依赖,它们能更好地处理跨平台和版本依赖问题。

4.3 性能调优与调试技巧

  • 编译优化:在最终部署时,确保使用-DCMAKE_BUILD_TYPE=Release。对于g2o,开启-DG2O_USE_OPENMP=ON可以利用多核CPU加速优化求解。
  • 符号调试:在开发阶段,使用Debug构建类型(-DCMAKE_BUILD_TYPE=Debug)并配合GDB或LLDB进行调试。尽管Ceres和g2o内部复杂,但你的代码逻辑问题可以通过断点清晰定位。
  • 内存与性能剖析:使用valgrind检查内存泄漏,使用perf或gprof进行性能热点分析。特别是在处理大规模图优化时,瓶颈可能出现在线性求解器选择或雅可比矩阵计算上。

我在多个机器人项目中部署过这两个库,最深刻的体会是:环境隔离和版本记录至关重要。曾经因为系统升级导致SuiteSparse版本变化,整个优化系统结果出现微小偏差,排查了整整一周。现在,对于任何重要项目,我都会将完整的依赖树(包括库的版本号)记录在项目的README或environment.yml文件中,并优先考虑使用Docker容器。对于Ceres和g2o,直接从源码安装在/usr/local下虽然方便,但在处理多个需要不同版本库的项目时,使用CMAKE_INSTALL_PREFIX安装到独立目录,或者利用conda环境管理可能是更优雅的方案。记住,顺利安装只是起点,将它们稳定、高效地融入你的工程流水线,才是发挥其威力的关键。

Ubuntu20.04安装Ceres和g2o库 x-special/nautilus-clipboard cut file:///home/liqiang/Desktop/DeepinScreenshot_Navigator_20210914203012.png 一、ceres安装: 1.Ctrl+Alt+T打开终端: 安装依赖: sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgt 阅读详情

相关推荐

slam库安装:Ceres、g2o卸载和安装,OpenCV多版本共存

卸载Ceres Ceres只有一个库文件在"/usr/local/lib"中,并且所有头文件都在"/usr/local/include/ceres"中 sudo rm -r /usr/local/lib/cmake/Ceres sudo rm -r /usr/local/include/ceres /usr/local/lib/libceres.a 安装Ceres 下载最新版Ceres 安装 mkdir build && cd build cmake .. make sudo make

qq_34997512的博客 4996

Ubuntu20 安装Ceres库和g2o库

Ubuntu20 安装Ceres库和g2o库

qin_liang的博客 5537

Ubuntu20.04下Ceres与g2o库的安装与配置指南

本文详细介绍了在Ubuntu20.04系统下,为SLAM及三维视觉项目安装与配置两大核心优化库Ceres Solver和g2o的完整指南。内容涵盖从系统依赖准备、源码编译安装、到项目集成与常见问题排查的全流程,旨在帮助开发者快速搭建高效的优化计算环境。

github5actions的博客 528

ubuntu18.04 安装ceres,g2o,以及cmake升级

背景:在进行slam开发时,需要的一些包 一.ceres安装 1. 下载Ceres 方法一:直接下载 下载链接:https://github.com/ceres-solver/ceres-solver 这里我下载的是2.0.0版本,下载后解压在主目录。 方法二:使用 git 命令下载 git clone https://ceres-solver.googlesource.com/ceres-solver 2. 安装相关依赖 sudo apt-get install liblapack-dev

qq_42537872的博客 5630

5分钟搞定!用Anaconda在Ubuntu20.04上安装Ceres和g2o(无需手动编译)

本文介绍了一种在Ubuntu20.04上快速部署Ceres和g2o的革新方法。通过利用Anaconda(或Miniconda)环境,无需手动编译源码,即可实现一键式安装、自动依赖管理和环境隔离,彻底解决了传统安装方式中的依赖冲突、系统污染和可复现性差等痛点,让开发者能在几分钟内搭建好视觉SLAM或三维重建的开发环境。

weixin_28841265的博客 430

Ubuntu20.04下Sophus库部署全攻略:从fmt到ceres的完整避坑指南

本文详细介绍了在Ubuntu20.04系统下部署Sophus库的完整流程,包括fmt、ceres、eigen等关键依赖库的安装与版本管理,以及CMake工具链的优化配置。通过实战案例和避坑指南,帮助开发者解决SLAM和机器人开发中的数学工具链部署难题,确保各库版本兼容性和系统稳定性。

weixin_30832143的博客 454

Ubuntu18.04安装Ceres库和G20库

一、安装依赖 zhangman@zhangman-G3-3579:~$ sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev 二、下载Ceres包 https://github.com/ceres-solver/ceres-solver/tree/e51e9b46f6ca88ab8b2266d0e362771db6d98067 三、编

qq_42138662的博客 2958

视觉SLAM十四讲slambook2示例代码所有依赖库的编译安装教程(VTK、OpenCV3、ceres、Sophus、g2o、Eigen、Pangolin、googletest等)

这是2021年的最后一篇博客~ 新年快乐! 0 准备工作   首先需要先安装cmake编译器: sudo apt-get install cmake   以及,将十四讲的示例代码克隆下来(十四讲的源码地址点击这里): git clone --recursive https://github.com/gaoxiang12/slambook2.git   由于里面的3rdparty文件夹内所有内容都来自于其他github仓库,所以需要加上--recursive参数,不然克隆下来的内容不完整。   如果你.

zeeq的博客 7829

Ubuntu20.04下Ceres和g2o库安装全攻略:从依赖安装到编译优化

本文提供了在Ubuntu20.04系统下安装和优化Ceres与g2o库的完整实战指南。内容涵盖从核心依赖解析、源码编译配置优化(如启用Release模式与CPU指令集优化),到系统集成、功能验证及性能基准测试的全流程。旨在帮助开发者构建稳定高效的开发环境,以充分发挥这两个库在视觉SLAM和机器人状态估计等计算密集型应用中的性能潜力。

food6的博客 432

对族实例进行任意的矩阵变换,需要什么样的族?

问:一个小问题,想向您请教一下。 能不能实现一个这样的操作:创建了一个常规模型的FamilyInstance,然后知道旋转和平移的矩阵,能否根据变换矩阵更新FamilyInstance的位置,绕任意轴旋转任意角度。 请问什么样的实体才能在revit项目文件中任意旋转?貌似一般的实例只能在XY平面内旋转,并且LocationPoint中只有一个Rotation参数。答:您好,因为Revit里面的构件

我爱Revit —— BIM应用及BIM应用软件解决方案专栏 3624

瑞芯微RK3576上手实测:8nm新U配6TOPS NPU,做AIoT项目选它还是RK3588/RK3568?

本文深度评测瑞芯微RK3576芯片在中高端AIoT项目中的表现,对比RK3588和RK3568的性能差异。RK3576采用8nm工艺,配备6TOPS NPU,在解码能力、AI推理效率和功耗控制方面表现均衡,是中端项目的黄金选择。实测数据显示其在多路视频解码和AI加速性能上优势明显,特别适合智能摄像头和工业HMI设备。

weixin_42627853的博客 714

《视觉SLAM十四讲》 编译报错问题汇总 Ubuntu20.04

高翔原视频是ubuntu14.04,看了一下,有很多库都有兼容问题,所以初步按这个Ubuntu 20装:这个教程是ubuntu20的,用ubuntu14会不兼容,比如qt5.12.12无法安装等(需要5.12.3)。和我之前安装的主要区别:之前用的是非虚拟机还装了ros的ubuntu20,现在裸ubuntu20.视觉SLAM十四讲slambook2示例代码所有依赖库的编译安装教程(VTK、OpenCV3、ceres、Sophus、g2o、Eigen、Pangolin、googletest等)_zeeq_的博

huqinwei的专栏 6394

网络工程系统CAD图:从设计到落地的关键技能与实战指南

网络工程并不只是配置路由器和交换机,真正的核心在于将设计方案转化为可施工的物理图纸。网络工程系统CAD图正是连接逻辑设计与物理世界的桥梁,它涵盖综合布线、信息点布置、桥架路由、弱电间规划等关键内容。理解并掌握这套图纸体系,是网络工程师从基础设备调试走向项目主导者、弱电总工乃至网络架构师的重要分水岭。在园区网、数据中心、智能楼宇等真实场景中,一套规范的系统CAD图直接决定了施工质量、验收效率与后期运维的可靠性。本文从基础概念出发,拆解图纸的组成层次、绘制流程和软件工作流,并结合学习路线与就业方向,帮助初学者建

weixin_33860553的博客 387

Ubuntu20.04安装CUDNN、Ceres和Colmap

前言 本篇记录在自己服务器上安装Colmap过程。 系统:Ubuntu 20.04 显卡:Nvidia Geforce RTX 3080Ti 参考链接:Ubuntu20.04安装Colmap 1.安装CUDA和CUDNN 首先检查是否有这两个东西 nvcc -V 和 ls | grep cudnn 说明只有CUDA没有CUDNN 参考链接:判断CUDA和CUDNN是否安装成功并正常使用 接下来就是安装CUDNN 参考链接: 先查看一下CUDA的安装路径 /usr/local/cuda-11.3/ ,因为之

Nismilesucc的学习札记 5978

智能车学习日记【二】————十字和斜入十字

智能车学习日记【二】————十字和斜入十字 文章目录 智能车学习日记【二】————十字和斜入十字 前言 一、普通十字补线 二、斜入十字 1.判断是否为斜入十字和斜入十字类型 2.找斜入十字拐点 总结 前言 经过了一个多月的学习,小白的我终于也是能较稳定调出了2.8m以上的四轮车,过程中也遇到了很多困难,其中就有十字补线和斜入十字补线。尤其是斜入十字也是困扰了我快一周,现在和大家分享一下我处理斜入十字的方法(我的方法其实还有很多漏洞需要改进,仅供大家参考理解一下,欢迎各位在评论区指点出可

bsefef的博客 2735

apache 403错误 Forbidden解决方法

当网页打开提示以下错误时,即出现了403错误。 Forbidden You don't have permission to access / on this server. 403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。通常情况可能(但不限于此)的原因有: 原因1:apache配置文件中没有对站点目录的权限许可,这通...

lmseo5hy的博客 1489

Ubuntu18.04搭建 SLAM环境(完美避坑,版本对应不报错)

Ubuntu18.04版本配置 SLAM环境写到前言一、CMake、g++、git的安装二、Eigen的配置三、Sophus的配置四、OpenCV、PCL、Pangolin的配置安装1、OpenCV的配置2、PCL3、Pangolin五、Ceres、g2o、DBoW3的配置1、Ceres(1)软件包下载:(2)安装编译Ceres库所需依赖项(3)然后解压ceres,打开终端进入解压后的文件,编译安装2、g2o3、DBoW3六、octomap七、参考博客 写到前言 近来需要用到SLAM环境来完成项目工作,因此

m0_48609250的博客 8981

OSPF规划两大模型:双塔奇兵、犬牙交错

大家好,今天给大家带来的是OSPF规划两大模型:双塔奇兵、犬牙交错,让我们直接开始吧! OSPF规划之双塔奇兵 说明: OSPF 如果某个区域存在两个 ABR,并且在两个 ABR 上都对 area n 内的路由做了聚合操作。 最佳配置: 两台ABR之间的红线应该使用以太网的子接口技术,一个子接口属于area0,另一个属于 area n;或者该链路规划为 area n,同时配置虚连接; ABR 的 loopback0 规划入 area 0 OSPF 规划之犬牙交错 说明: 有时接入层的设备会以乱序的

网络技术联盟站 2411

cartographer Ubuntu 20.04下安装

cartographer 安装 ubuntu系统版本:20.04 参照:https://google-cartographer.readthedocs.io/en/latest/安装文档,过程比较顺利。 一、相关源码下载 源码都是下载的最新版本。如果下载慢,可以先导入码云,再从码云下载会比较快点, 其中Ceres的下载路径换成github下的,具体如下。 1、git clone https://github.com/googlecartographer/cartographer.git 2、git cl

WEN_LG的博客 6290

CMOS图像传感器——工作原理

CMOS图像传感器的曝光与读出

沧海一升的博客 9458

17、扩展景深成像的瞳孔函数工程技术解析

本文详细解析了扩展景深成像的关键技术,包括基于焦距堆栈的数字处理方法、立方相位掩模的光学设计、对数非球面透镜的应用以及旋转点扩散函数的深度编码功能。通过实验验证和实际应用分析,展示了这些技术在显微镜成像、工业检测和医疗影像中的广泛用途及优势。同时探讨了未来发展方向,如智能算法优化、新型光学材料和多模态成像技术,为相关领域的技术创新提供了参考。

y2z3a4b5c的博客 164

SLAM14讲 库安装——第六讲 Ceres库和g2o库安装

手把手教你快速安装slam十四讲需要的库

fegxg的博客 989

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

slambook2(ch6)—— Ubuntu18.04安装Ceres库 + g2o库 + 例程演示

slambook2(ch6)—— Ubuntu18.04安装Ceres库 + g2o库 + 例程演示一、安装 Ceres1.安装依赖项2.下载——编译——安装3.安装结果4.安装错误二、安装g2o1.安装依赖项:2.下载——编译——安装:3.可能的错误三、例程结果 一、安装 Ceres 1.安装依赖项 首先安装 Ceres,安装依赖项(如果缺少依赖项,在 cmake 时会有提示,补上重新 cmake 即可): sudo apt-get install liblapack-dev libsuitesparse

曾记否@ 2897

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ubuntu安装 ceres,g2o库

3、进入下载路径,编译。

weixin_44733606的博客 2818

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ubuntu18.04 安装ceres-solver

3.16 或更高版本。1、查询cmake版本:遇见错误1:遇见错误2:E: 软件包 build-essential 还没有可供安装的候选者执行了sudo apt-get dist-upgrade也没用。可以用以下方法解决先执行或apt升级的时候用了非官方的源版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

m0_59460079的博客 2292
上一篇: 时序卷积网络TCN vs LSTM:谁更适合你的时间序列预测任务?
下一篇: SRTM3高程数据下载与使用全攻略:从NASA官网到国内镜像的完整指南
happy2
博客等级 码龄19年 25粉丝 981原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值