有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Tango图像格式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 read as NV12

但感觉颜色变淡了,所有东西看起来都很黄。还是我偏执

我的问题是,阅读YCRCB_420_SP图像的正确方式是什么?应用OpenCVcv::COLOR_YUV2RGB_NV12正确吗

编辑:

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

NV21

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

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

共 (1) 个答案

  1. # 1 楼答案

    图像格式应该是YUV NV21而不是NV12。OpenCV可以从that format to BGR or RGB转换图像

    猜猜看,你似乎用的是RGB而不是BGR,NV21和BGR后的图像如下所示: enter image description here