【发布时间】:2017-02-20 15:17:04
【问题描述】:
我正在开发英特尔的 RealSense SDK,我必须将其转换为 OpenCV 格式。
我在论坛 (Convert a PXCImage into an OpenCV Mat) 中看到了这个解决方案,但是对于“PIXEL_FORMAT_YUY2”类型,该代码不起作用。
有人知道怎么改吗?
提前致谢
【问题讨论】:
我正在开发英特尔的 RealSense SDK,我必须将其转换为 OpenCV 格式。
我在论坛 (Convert a PXCImage into an OpenCV Mat) 中看到了这个解决方案,但是对于“PIXEL_FORMAT_YUY2”类型,该代码不起作用。
有人知道怎么改吗?
提前致谢
【问题讨论】:
我不知道英特尔实感 SDK,因为我只使用了 librealsense API。
英特尔实感 SDK 的文档应为 here。
我不知道它如何与 SDK 配合使用,但使用 librealsense,您可以直接选择适当的颜色格式(对于 OpenCV mat,它应该是 bgr8)。
如果您的 SDK 没有此选项,您可以查看 here 如何将 librealsense 解包 yuy2 格式。
或者您可以尝试将数据直接复制到mat(您必须弄清楚cvDataType 的好值和cvDataWidth 的好值),然后将cvtColor() 与适当的conversion 如果您希望能够以 RGB 三元组的形式访问像素值?
希望对你有帮助。
【讨论】:
librealsense 是 Windows 以外平台的替代方案。对于 Windows,我认为 Intel 建议使用 SDK。您仍然可以使用 CMake 和 Visual Studio 从源代码 librealsense 构建。您应该检查您使用 SDK 获得的默认颜色格式,也许它与 yuy2 不同的格式,您应该能够轻松转换为 mat bgr。
colorIm->AcquireAccess(PXCImage::ACCESS_READ, PXCImage::PIXEL_FORMAT_YUY2, &frmData);image_openCV = Mat(Size(640, 480), CV_8UC3, frmData.planes[0]); 但效果不好,图片排序不正确。