0

我有一个实感相机,我正在尝试读取 16 位深度图像。我有一个问题 - 当我创建具有 16 位值的直接 opencv mat 时,我只看到黑色图像。当我将 16 位图像转换为 255/1000 比例的 8 位图像时,我得到了正常图像,但我不想丢失这些信息。

depthImage->AcquireAccess(PXCImage::ACCESS_READ, PXCImage::PIXEL_FORMAT_DEPTH, &depthImgData);

pxcBYTE* cpixels = depthImgData.planes[0];

Mat r_depth(frameSize, CV_16UC1, cpixels);

这是我的代码,我在其中转换图像。

您能否告诉我这种行为的原因是什么以及如何获得 16 位图像?

4

1 回答 1

1

您使用哪种实感设备?R200、LR200、SR300 还是 D410?

建议使用在 GitHub 上维护的 librealsense 库/API。将深度格式配置为 RS2_FORMAT_Z16。而且,我使用下面的代码来获取 16 位深度数据。

auto frame = queue.wait_for_frame();

Mat depth16(Size(640, 480), CV_16U, (void*)frame.get_data(), Mat::AUTO_STEP);
于 2017-09-12T13:20:10.177 回答