c++ - opencv realsense 16位深度图像

标签 c++ opencv realsense

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

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

pxcBYTE* cpixels = depthImgData.planes[0];

Mat r_depth(frameSize, CV_16UC1, cpixels);

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

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

最佳答案

您使用哪种RealSense设备? 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);

关于c++ - opencv realsense 16位深度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45104298/

相关文章:

c++ - 在 eclipse、Red Hat Linux 中运行 c++ 项目时出现问题

python cv2 错误地检测多个图像中的方形

C++ 如何从 std::string 中删除\0 字符

c++ - visual studio 2015 exp 结果不同

c++ - C++类中的char数组成员

android - 使用 Opencv 从 Android 中的 CameraGLSurfaceView 拍照

python-2.7 - 使用蒙版获取图像的平均值

c++ - 如何用 OpenCV 同时显示深度和彩色视频图像?

c++ - 英特尔实感深度摄像头 D435i 噪音和土堆

c++ - Qt 和英特尔实感入门