使用OpenCV for Android相机进行YUV到RGB转换

时间:2014-10-19 10:23:00

标签: opencv colors android-camera yuv

如果我理解正确,当我使用OpenCV使用cvtColor(CV_YUV420sp2BGR)函数将YUV转换为RGB时,实际上我会调用YUV420sp2RGB888Invoker类。

转换公式为

R = 1.164(Y - 16) + 1.596(V - 128)
G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
B = 1.164(Y - 16) + 2.018(U - 128)

这些系数适用于CCIR 601 spec,其中 Y U V 的范围分别为[16 … 235][16 … 240][16 … 240]

但Android相机(特别是在Snapdragon上)似乎为所有组件返回完整(JFIF)范围[0 … 255]的NV21图像(另请参阅https://stackoverflow.com/a/12702836/192373)。

有没有办法在JFIF颜色范围内使用OpenCV颜色转换?

1 个答案:

答案 0 :(得分:0)

根据此OpenCV文档:http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html

转换 CV_YCrCb2BGR 似乎正是您正在寻找的。它使用与您链接的stackoverflow答案中提到的相同系数(完整范围为1.403,0.714,0.344和1.773)。