点云配准:Open3D手动选点配准工具

写在前面

  • 本文内容

    • Open3D手动选点配准工具;
    • 包含CMakeLists,cpp源码,编译脚本,运行结果可视化,可执行文件;
    • 源码、编译好的工具和脚本在这里下载:
      本博客资源链接/share_noel/csdn/open3d/open3d_ManuallyAlignPointCloud
      在这里插入图片描述
  • 运行结果在这里插入图片描述

  • 平台/环境
    Windows10, Ubuntu1804, CMake, Open3D

  • 转载请注明出处:
    https://blog.csdn.net/qq_41102371/article/details/136840171

目录

  • 写在前面
  • 准备Open3D
  • 代码
    • 源码
    • 编译
    • 使用
  • 参考

准备Open3D

参考:各个版本的Open3D、PCL的编译、使用教程
本文使用Open3D0.14.1

代码

源码

找到open3d源码中手动配准的源码,在Open3D0.14.1/Open3D/cpp/tools/ManuallyAlignPointCloud
在这里插入图片描述
新建一个文件夹open3d_ManuallyAlignPointCloud/src

mkdir open3d_ManuallyAlignPointCloud
cd open3d_ManuallyAlignPointCloud
mkdir src

将找到的代码复制到src中

编译

vscode打开open3d_ManuallyAlignPointCloud,修改src/CMakeLists.txt,其中"D:/carlos/install/source_code/Open3D/Open3D0.14.1/Open3D/3rdparty/tinyfiledialogs/include"需要改成你本地的open3d源码的对应位置
在这里插入图片描述
CMakeLists.txt

cmake_minimum_required(VERSION 3.19.2)
project(ManualAlign)


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
set(CMAKE_BUILD_TYPE "Release")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")

# The options need to be the same as Open3D's default
# If Open3D is configured and built with custom options, you'll also need to
# specify the same custom options.
option(STATIC_WINDOWS_RUNTIME "Use static (MT/MTd) Windows runtime" ON)
if(STATIC_WINDOWS_RUNTIME)
    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
endif()

find_package(Open3D REQUIRED)

message(${Open3D_INCLUDE_DIRS})
include_directories(
  ${Open3D_INCLUDE_DIRS}
  ${PROJECT_SOURCE_DIR}
  ${JSONCPP_DIR}/include
  "D:/carlos/install/source_code/Open3D/Open3D0.14.1/Open3D/3rdparty/tinyfiledialogs/include"
  )

add_executable(ManuallyAlignPointCloud)

target_sources(ManuallyAlignPointCloud PRIVATE
    ManuallyAlignPointCloud.cpp
    AlignmentSession.cpp
    VisualizerForAlignment.cpp
)
target_link_libraries(ManuallyAlignPointCloud PRIVATE
    Open3D::Open3D
    Open3D::3rdparty_jsoncpp
    Open3D::3rdparty_tinyfiledialogs
)
# set_target_properties(ManuallyAlignPointCloud PROPERTIES FOLDER "Tools")
# open3d_show_and_abort_on_warning(ManuallyAlignPointCloud)
# open3d_set_global_properties(ManuallyAlignPointCloud)

添加编译脚本:
在这里插入图片描述

compile.bat

rem By carlos_lee 202403
rem rd /s /q .\build
cmake -DOpen3D_DIR="D:/carlos/install/open3d141/CMake" ^
-DJSONCPP_DIR="D:/carlos/install/jsoncpp" ^
-S ./src . -B ./build -DCMAKE_BUILD_TYPE=Release
cmake --build ./build --config Release --target ALL_BUILD
mkdir bin
copy .\build\Release\ManuallyAlignPointCloud.exe .\bin

其中,DOpen3D_DIR是你编译好的open3d的安装路径,json见jsoncpp+cmake使用

编译
在这里插入图片描述

使用

具体的操作在代码里都写了,这些就是用来控制键盘回调函数的,在source和target分别按顺序选四个点,然后在alignment窗口点一下,ctrl+a就执行点对的刚体变换计算了,ctrl+r是重置点云位姿
在这里插入图片描述
选点操作:如果没用过open3d选点操作的,shift+左键是选一个点,shift+右键是取消上一个点的选择,在可视化窗口中(英文状态下)输入h,就会有cmd输出说明
在这里插入图片描述
添加运行脚本run_manualAlign.bat

.\bin\ManuallyAlignPointCloud.exe ^
D:\carlos\my_tools\data\bunny\data\bun045.ply ^
D:\carlos\my_tools\data\bunny\data\bun000.ply ^
--without_scaling --voxel_size 0.01 --max_corres_distance 0.05

其中,第二三行分别是你本地source和target点云的路径
运行
在这里插入图片描述
源码、编译好的工具和脚本在这里下载:
本博客资源链接/share_noel/csdn/open3d/open3d_ManuallyAlignPointCloud

下面就是操作示例
在这里插入图片描述

参考

文中已列出

主要做激光/影像三维重建,配准、分割等常用点云算法,熟悉open3d、pcl等开源点云库,技术交流、咨询可私信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/471179.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SAP 配额修改 + 修改记录写入实现

前一周 写了文章 思考了SAP 修改记录写入的思考-CSDN博客 紧接着 小家伙 感染了支原体 反反复复 &#xff0c;代码没有落地&#xff0c;今天终于落地了&#xff0c;下面把代码贴出来。 FUNCTION ZRFC_MM_QUOTA_BAPI. *"----------------------------------------------…

STM32 CubeMX使用介绍(含FreeRTOS生成)

文章目录 前言1. 简介1.1 什么是STM32CubeMX1.2 为什么会有STM32CubeMX的出现1.3 STM32CubeMX常用功能有哪些&#xff1f;1.4 官方资料下载地址 2. 下载和安装STM32CubeMX2.1 下载软件2.2 软件安装 3. 使用方式3.1 说明3.2 不同选择器介绍3.3 构建新的项目3.1 选择单片机的型号…

【spring】@DependsOn注注解学习

DependsOn介绍 DependsOn 是 Spring 框架中的一个注解&#xff0c;用于指定一个 bean 的依赖关系。当 Spring 容器初始化 bean 时&#xff0c;它会按照一定的顺序进行初始化。如果一个 bean 依赖于其他 bean&#xff0c;那么这个 bean 的初始化应该在依赖的 bean 之后进行。 …

SPSS k-均值聚类的 anova分析表解读

from&#xff1a;SPSS K均值聚类&#xff08;k-means&#xff09;和可视化方法 - CollinsLi - 博客园 (cnblogs.com) F值&#xff1a;变量对聚类的贡献 显著性水平&#xff1a;<0.05 则因子显著

SpringBoot + Vue项目(显示+删除+回显家居)

文章目录 1.显示家居信息1.com/sun/furn/controller/FurnController.java 添加方法2.postman测试3.src/views/HomeView.vue 修改el-table 并清空数据池tableData4.src/views/HomeView.vue 发送请求并取出数据1.方法池2.created阶段调用list方法3.结果展示 5.src/utils/request.…

蓝桥杯练习题——日期问题

1.日期差值 思路 分别计算从第一年到两个日期过了多少天&#xff0c;然后相减 #include<iostream> #include<cmath> using namespace std; int a[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int x1, x2;int f(int year, int month, int day){int res…

【爬虫】专栏文章索引

为了方便 快速定位 和 便于文章间的相互引用等 作为一个快速准确的导航工具 爬虫 目录&#xff1a; &#xff08;一&#xff09;web自动化和接口自动化 &#xff08;二&#xff09;实战-爬取Boss直聘信息数据

HTML静态网页成品作业(HTML+CSS)——非遗徽州木雕网页(6个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有6个页面。 二、作品演示 三、代…

python利用openpyxl库操作Excel来读取、修改、写入测试数据

一、openpyxl模块介绍 1、openpyxl是读写Excel的python库&#xff0c;是一个比较综合的工具&#xff0c;能够同时读取和修改Excel文档 2、openpyxl中有三个不同层次的类,每一个类都有各自的属性和方法&#xff1a; Workbook是一个excel工作表 Worksheet是工作表中的表…

Android Studio实现内容丰富的安卓医院医生招聘平台

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号120 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查看职位列表 4.收藏功能&#xff0c; 5.投递…

Java基础学习笔记二

Java的加载与执行 Java既是编译型语言又是解释型语言 question&#xff1a;为什么JVM可以跨平台执行 answer &#xff1a; Java虚拟机&#xff08;JVM&#xff09;之所以能够跨平台执行&#xff0c;是因为它在不同操作系统上提供了一个统一的运行环境&#xff0c;实现了Java程…

web前端之不一样的下拉菜单、不选中第一个元素的样式效果、伪类排除第一个元素、符号选择器、hover、not、first、child

MENU 效果图htmlcssJShtmlcss 效果图 htmlcssJS html <nav><ul><li class"navli"><h4>HTML5</h4><ul class"ulson"><li class"lison">HTML5</li></ul></li><li class"na…

Vue+Element-UI Table表格实现复选框单选效果(隐藏表头上的全选Checkbox)

实现效果 完整代码 <div class"box-pos"><el-table ref"table" :header-cell-style"{ color: #FFF, background: #333 }":cell-style"{ color: #FFF, background: #333 }" :data"grListData" style"width: 1…

Hack The Box-Devvortex

目录 信息收集 nmap whatweb WEB web信息收集 wfuzz 漏洞探索 漏洞发现 反弹shell 提权 get user hashcat get root 信息收集 nmap 端口信息收集┌──(root?ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.242 --min-rate 10000 Starting Nmap 7…

基于华为ensp的企业网络规划(新版)

第一章 项目概述 1.1 项目总体描述 假设某大型公司总部在北京、在重庆设置分部&#xff0c;总部和分部均有研发部、市场部、财务部等部门&#xff0c;现在要求进行网络规划与设计&#xff0c;实现分部和总部能够进行网络连通。为了保证数据安全&#xff0c;在总部和分部之间可…

全国各省市县统计年鉴/中国环境统计年鉴/中国工业企业数据库/中国专利数据库/污染排放数据库

统计年鉴是指以统计图表和分析说明为主&#xff0c;通过高度密集的统计数据来全面、系统、连续地记录年度经济、社会等各方面发展情况的大型工具书来获取统计数据资料。 统计年鉴是进行各项经济、社会研究的必要前提。而借助于统计年鉴&#xff0c;则是研究者常用的途径。目前国…

第二证券策略:股指预计维持震荡格局 关注消费、农牧饲渔等板块

第二证券指出&#xff0c;在前期高股息盈利板块和科技立异主题接连获得较好体现后&#xff0c;商场出现必定程度的“高切低”现象&#xff0c;首要体现是切换为轻视值和价值方向&#xff0c;中长期高股息盈利和科技立异主题仍是商场主线&#xff0c;3月份后半程关注医药生物、电…

Visual Studio 2013 - 高亮设置突出显示的引用

Visual Studio 2013 - 高亮设置突出显示的引用 1. 高亮设置 突出显示的引用References 1. 高亮设置 突出显示的引用 工具 -> 选项… -> 环境 -> 字体和颜色 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

红外相机和RGB相机标定:实现两种模态数据融合

1. 前期准备 RGB相机&#xff1a;森云智能SG2-IMX390&#xff0c;1个红外相机&#xff1a;艾睿光电IR-Pilot 640X-32G&#xff0c;1个红外标定板&#xff1a;https://item.taobao.com/item.htm?_ujp3fdd12b99&id644506141871&spma1z09.2.0.0.5f822e8dKrxxYI 2.操作步…

NSS [SWPUCTF 2022 新生赛]ez_ez_unserialize

NSS [SWPUCTF 2022 新生赛]ez_ez_unserialize 开题&#xff0c;直接给了题目源码。 简单看了一下&#xff0c;题目告诉我们flag在哪&#xff0c;而且类中有高亮文件方法。怎么拿flag已经很明显了。关键点在于__weakup()魔术方法固定死了我们高亮的文件。所以这题只需要绕过__w…