RGB图和Depth图生成点云图原理与代码实现(realsense D435 )

本文介绍了RGB图和Depth图如何转换成点云图的原理,重点关注了坐标系间的转换关系,并提供了可直接运行的代码实现,参考了相关博客资源。
摘要由CSDN通过智能技术生成

1、首先,看看四个坐标系之间的转换关系,就明白了 :

dx dy 分别表示u轴和v轴方向上每个像素的物理尺寸(图中说法不正确)

 

 

2、代码如下,可直接运行: 


#include <iostream>
#include <pcl/io/io
要使用ROS C++编写程序来订阅和获取Realsense D455相机的像、深度点云,首先需要安装ROS和Realsense相机的驱动程序,并在ROS工作空间中创建一个ROS包。 1. 安装ROS和Realsense相机驱动: - 安装ROS:根据官方文档选择合适的ROS版本进行安装。 - 安装Realsense相机驱动:根据Realsense官方文档安装相应的驱动程序,并确保驱动程序与ROS版本兼容。 2. 创建ROS包: 在ROS工作空间的src目录下创建一个新的ROS包,命名为realsense_d455,并使用catkin_make进行编译。 3. 编写订阅像、深度点云的ROS节: 在realsense_d455包中的src目录下创建一个新的.cpp文件,例如realsense_subscriber.cpp,编写如下ROS节代码: ```cpp #include <ros/ros.h> #include <sensor_msgs/Image.h> #include <sensor_msgs/PointCloud2.h> #include <sensor_msgs/PointCloud.h> // 像回调函数 void imageCallback(const sensor_msgs::ImageConstPtr& msg) { // 在这里处理获取到的像数据 // ... } // 深度回调函数 void depthCallback(const sensor_msgs::ImageConstPtr& msg) { // 在这里处理获取到的深度数据 // ... } // 点云回调函数 void cloudCallback(const sensor_msgs::PointCloud2ConstPtr& msg) { // 在这里处理获取到的点云数据 // ... } int main(int argc, char** argv) { ros::init(argc, argv, "realsense_subscriber"); ros::NodeHandle nh; // 创建订阅器 ros::Subscriber image_sub = nh.subscribe("/camera/image", 10, imageCallback); ros::Subscriber depth_sub = nh.subscribe("/camera/depth", 10, depthCallback); ros::Subscriber cloud_sub = nh.subscribe("/camera/point_cloud", 10, cloudCallback); ros::spin(); // 循环监听话题 return 0; } ``` 4. 编译和运行: 在realsense_d455包的根目录下使用catkin_make命令进行编译。编译完成后,使用ROS launch文件启动程序。 综上所述,通过创建一个ROS节并订阅相应的话题,可以在ROS C++中实现订阅和获取Realsense D455相机的像、深度点云数据。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值