c++ - 使用深度图

标签 c++ opencv ros

我在查找有关如何使用深度图/图像来获取到障碍物的距离的任何信息时遇到了问题。

TLDR:我有一个作为 OpenCV Mat 的深度图,我知道它是 CV_16UC1,但我不知道如何从它获取距离。

我有一个 Intel Realsense D415 摄像头,我已经安装了 SDK、ROS 包装器,我发布了一个包含深度图的主题。 (/相机/深度/image_rect_raw)

接下来,我用 C++ 编写了一个小程序,使用 cv_bridge 将图像转换为 OpenCV 图像,并将其显示在窗口中,因此我知道它正在运行。 (图片:https://i.imgur.com/QyKWp2J.png)

现在我需要得到它的距离,我不知道该怎么做,也没有找到帮助。 我想我只想使用图像的上半部分或 2/3,因为相机的安装方式,所以下三分之一/一半将只包含地板/地面。

我觉得为了完成这项工作我缺少了一些重要而简单的东西,但我真的不知道现在该做什么。

最佳答案

如果你有一个深度图并且你想从中生成 3D 点,你可以使用 reprojectImageTo3D() OpenCV的功能。

在此之前,您需要有视差到深度映射矩阵,可以使用stereoRectify() 获得。功能。

关于c++ - 使用深度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51728827/

相关文章:

c++ - 将静态库与 gnu g++ : No such file or directory, Makefile 链接

c++ - 命名?模板、函数中的参数

matlab - 为什么 cv.findChessboardCorners 不适合我?

c - 无法链接 opencv 库

opencv - ros dynamic install无法处理软件包 'opencv3'

c++ - 0 或 1 以外的整数的 boolean 值是多少?

c++ - Boost Spirit 和 Lex 解析器问题

image-processing - 每像素阈值

ubuntu - 未满足的依赖项 - 无法安装 python-catkin-pkg

c++ - openCV 'cvPoint' 和 'CV_FONT_HERSHEY_SIMPLEX' 未在此范围内声明