# Mv3dRgbdSDK_Open3D **Repository Path**: Hikrobot/Mv3dRgbdSDK_Open3D ## Basic Information - **Project Name**: Mv3dRgbdSDK_Open3D - **Description**: RGB-D相机SDK Open3D - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-03-01 - **Last Updated**: 2023-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Open3D集成及示例代码开发 ## 1.环境配置:(open3d版本需要与vs版本对应最佳) 环境所需软件环境:vs2017+OPEN3D(v0.10.0)+QT5.9.6、QT_VS_TOOL(2.6.0)、SDK相关库。 Visual Studio运行环境:release+x64(和编译库有关,本次项目使用的是release+x64编译) 文件夹open3d_demo中包含如下 环境配置步骤: 1.SDK相机库环境配置 BasicDemo_Open3D.sln为工程文件,其项目属性设置Mv3d_RGB相机库环境设置 添加静态库 include文件与lib文件为Mv3d_RGB相机的头文件、静态库存放文件,除了以上两个文件,还需要安装RGB_D相机的驱动,至此相机SDK的环境配置结束。 2. Open3D库环境配置 Open3D_VS2017_C++_library文件夹,其include包含Open3d0.10.0版本的头文件,lib文件为Open3D0.10.0静态库,open3d_release为项目配置属性表,改属性表配置了项目所需OPEN3D库环境。其配置设置如下 链接器-输入-附加依赖项: 添加依赖库,如下  Open3D.lib opengl32.lib glu32.lib glew.lib glfw3.lib turbojpeg-static.lib jsoncpp.lib png.lib zlib.lib tinyfiledialogs.lib tinyobjloader.lib qhullcpp.lib qhullstatic_r.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib BasicDemo_Open3D为项目文件 (如果需要使用本项目提供的OPEN3D进行其它开发,其环境设置可以参考以上配置)。本项目只需要添加属性表到项目文件中,即可(注意库路径,本项目设置的是相对路径),至此Open3d的环境配置结束。 3. QT配置 点击QT Vs Tools,在Qt options 中点击add,添加对应的QT版本,由于本环境支持x64,选取msvc2017_64。 附:如果需要使用其他版本的open3d或vs,就需要从open3d的github网站(网址链接:[isl-org/Open3D: Open3D: A Modern Library for 3D Data Processing (github.com)](https://github.com/isl-org/Open3D)),下载对应版本的open3d库,此处建议0.8版本以上,然后选择对应vs版本进行编译即可,编译的方法,open3d的github网站有提供。 ## 2.项目主要代码文件介绍 项目代码文件如下: | 头文件 | 内容 | | -------------------------- | -------------- | | my_semaphore.h | 信号量自定义文件 | | depth_to_points.h | open3d点云数据以及处理 | | mainwindow.h mainwindow.ui | QT主窗口头文件、ui文件 | | option.h | 静态点云处理、线程同步参数 | | OPEN3D_MVS.h | 可视化项目头文件 | 介绍核心的几个文件 depth_to_points.h提供了以下点云功能接口: MV3D_OPEN3D_DATA:封装open3d点云数据格式 | 成员 | 功能 | | ---------- | ------------ | | pointcloud | Open3d格式点云数据 | depth_to_points:封装了点云处理功能接口的类 | 成员 | 功能 | | ---------------------- | ------------------- | | refush_point | 重置刷新点云数据 | | MV3D_TO_OPEN3D | sdk点云转open3d格式(可渲染) | | voxel_filter | 对存储数据进行体素滤波 | | YUV_to_RGB_colorpoints | 读取RGB/YUV格式数据 | refush_process_points函数:对open3d点云数据进行深拷贝操作 option.c包含了open3d静态点云数据处理函数(包含可视化) | 静态点云处理函数 | 功能 | | --------------- | ----- | | cmp_BoundingBox | 包围盒计算 | | ROI_points | ROI裁剪 | | voxel_filter | 滤波 | | normal_es | 法线估计 | ## 3.项目使用介绍 在配置好环境后,即可运行。 具体介绍如下: 主要包含: 1.功能选择界面:包含设备连接设置、点云可视化设置模块、点云处理模块 2.动态点云窗口 RGBD_Open3D_Viewer 3.静态点云处理窗口 主要的使用步骤如下: 步骤1.点击查找设备,其右侧可以选择连接方式,默认为usb+Ethernet的连接方式,文本窗口会输出设备读取信息,如果读取失败,会报错误信息:包括未找到设备、设备获取失败等; 读取设备成功后,根据下拉框选取所需连接设备。 步骤2.点击打开设备,RGBD_Open3D_Viewer窗口会动态显示点云,点云可视化可以设置点云背景、大小、渲染方式。本次项目提供了X字段,Y字段,Z字段、法线、RGB_点云渲染方式。点击更新显示即可更新点云可视化显示。 此处展示X字段渲染效果: Z字段渲染效果: 步骤3.点击静态点云可以获取实时显示点云窗口在这一刻的数据并在point_process里面显示。该操作可以重复进行来获取自己理想的点云数据。 步骤4.使用静态点云处理方法:点击对应的功能按钮即可,点云处理功能都能重复点击并更新窗口结果。 包围盒:可以设置包围盒颜色RGB(范围0-255) 滤波:设置体素滤波的边长大小,来控制滤波效果。 ROI裁剪,在点击后,点击ROI屏幕 点击快捷键K,编辑界面,用鼠标左键点击选取区域 在框选出点云后,按C可以保留框选区域的点云,此时会弹出文件保存路径,保存的点云格式为二进制PLY格式。 ROI裁剪后,右图为裁减保存后的结果: 步骤5.需要更换设备时,先点击关闭设备,再点击查找设备、重复第一步即可。