【发布时间】:2021-03-05 00:46:30
【问题描述】:
我有一个Intel Lidar L515,并在 Windows 上使用默认设置通过 realsense-viewer 录制了一条 ROS 消息。
我对深度消息感兴趣:/device_0/sensor_0/Depth_0/image/data。
我已订阅 C++ 中的 ROS sensor_msg::Image 主题,并正在使用 cv_bridge 转换为 opencv 图像。我正在尝试将 opencv at 函数与 char 一起使用,并且得到了很多 7,以及 168-190 之间的许多值。我把注意力集中在中间的浅绿色方块上,它在 1.28 米处。当我的鼠标在 realsense-viewer 中移到它上面时,最常见的十六进制值是 0x1410。
specs 表示图像数据为 Z16,数据表示与传感器的距离。我有一个 1.28 米的物体,传感器的范围是 9 米,但我认为我的值不会超过 2.5,因为我在一个相对较小的房间里。
我正在做的代码示例是:
void callback( const sensor_msgs::ImageConstPtr &depthImage, cv::Point upperLeft, cv::Point lowerRight )
{
cv::Mat depthImage_cv = ( cv_bridge::toCvCopy( depthImage, depthImage->encoding ) )->image;
for(int row = upperLeft.x; row <= lowerRight.x; row++)
{
for(int column = upperLeft.y; column <= lowerRight.y; column++)
{
float depth = depthImage_cv.at<uchar>(row,column);
ROS_INFO_STREAM("Depth char value: " << depth);
}
}
}
这是 realsense-viewer 中的示例图像,显示 0-4 比例:
我知道我的对象的距离。我想知道如果它准确地检测到该对象,它应该是什么像素值。 感谢您提供任何帮助或见解!
【问题讨论】:
标签: c++ opencv ros lidar realsense