Tango 图片格式 YCRCB_420_SP

Tango image format YCRCB_420_SP

我已经有一段时间没有为 Tango 开发了,但最近我更新到最新版本的 Tango Java API 我注意到 TangoImageBuffer 对象现在有 format == 17,即:

public static final int YCRCB_420_SP = 17;

据我所知,在以前的版本中它曾经是 YV12 而不是 YCRCB_420_SP

public static final int YV12 = 842094169;

我曾经应用 OpenCV cvtColor 函数将其转换为 BGR:

cv::Mat imageBgr(720, 1080, CV_8UC3);
cv::Mat image(3 * 720 / 2, 1280, CV_8UC1);
cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV12);

有没有办法使用 OpenCV 读取 YCRCB_420_SP?我尝试了 COLOR_YCrCb2BGR 和类似的模式,但它们不起作用。

显然,COLOR_YUV2RGB_NV12 仍然有效并产生了一些合理的结果:

但感觉颜色不对,一切看起来都很黄。还是我多疑了?

我的问题是,阅读YCRCB_420_SP图像的正确方法是什么?应用OpenCV是否正确cv::COLOR_YUV2RGB_NV12?

编辑:

我尝试按照@fireant 的建议使用 NV21,但这个显然不起作用:

NV12 更接近原始颜色。代码是:

cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV21);

图片格式应为YUV NV21 not NV12. OpenCV can convert an image from that format to BGR or RGB

只是猜测,您似乎使用的是 RGB 而不是 BGR,使用 BGR 的 NV21 之后的图像如下所示: