Skip to content

OpenCV在YUV420处理时的问题

前情提要:因为在研究新的图片转y4m的方法,所以采用了OpenCV的方式来处理RGB图片,将RGB图片使用cvtColor函数RGB2YUV_YV12的时候,发现颜色有一定的偏差,于是在查找是代码本身的问题还是调用过程的问题。

结果是OpenCV自己的坑,OpenCV在实现RGB2YUV_YV12这一过程的时候,并非是按照标准的处理方法,0-255的范围来实现的,而是使用了16-235的标准

附上RGB24与YUV420的互转公式

$Y= 0.299 \times R+0.587 \times G+0.114 \times B\\$ $U=-0.147 \times R-0.289 \times G+0.463 \times B\\$ $V= 0.615 \times R-0.515 \times G-0.100 \times B\\$

但是在OpenCV里面并不适用,经过实验,在COLOR_YUV2BGR_I420这个通道,用的是量化的转换公式

在这里插入图片描述

注意,此处尽管YUV的范围是0-255,但是依然按Y去减16去实现

在这里插入图片描述

TODO:回去吧OpenCV的源码改一下重新编译一遍,看看能不能把函数公式的计算方法修正一下。

Published in技术探究

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注