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
图像的正确方式是什么?应用OpenCVcv::COLOR_YUV2RGB_NV12
正确吗
编辑:
我试着按照@fireant的建议使用NV21,但这个显然不起作用:
NV12更接近原始颜色。代码是:
cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV21);
# 1 楼答案
图像格式应该是YUV NV21而不是NV12。OpenCV可以从that format to BGR or RGB转换图像
猜猜看,你似乎用的是RGB而不是BGR,NV21和BGR后的图像如下所示: