【发布时间】:2018-08-09 13:58:02
【问题描述】:
我在查找有关如何使用深度图/图像来获取到障碍物的距离的任何信息时遇到问题。
TLDR:我有一个作为 OpenCV Mat 的深度图,我知道它是 CV_16UC1,但我不知道如何得到它的距离。
我有一个英特尔 Realsense D415 摄像头,我已经安装了 SDK、ROS 包装器,我有一个发布了深度图的主题。 (/camera/depth/image_rect_raw)
接下来,我用 C++ 编写了一个小程序,它使用 cv_bridge 将图像转换为 OpenCV 图像,并将其显示在一个窗口中,所以我知道它正在工作。 (图片:https://i.imgur.com/QyKWp2J.png)
现在我需要与它保持距离,我不知道该怎么做,也未能成功寻求帮助。 我想我只想使用图像的上半部分或 2/3,因为相机的安装方式,所以底部三分之一/一半将只包含地板/地面。
我觉得为了完成这项工作,我错过了一些大而简单的东西,但我什至不知道现在该做什么。
【问题讨论】:
-
I 深度图通常存储每个像素距视点(相机)的深度(= 距离)。为了获得距离,您只需读取给定像素的单个深度值 (RGB)。
-
见这个例子:rs-pointcloud.cpp。如果您想知道如何从深度图计算点云,请查看:pointcloud.cpp。
-
我遇到的问题是我无法访问相机 API (=librealsense2),我只有图像提要。原来我真的可以得到像素(x,y)的值并得到以毫米为单位的距离。我只需要知道它是一个 u_int16_t 矩阵。