如果我理解正确,当我使用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颜色转换?
答案 0 :(得分:0)
根据此OpenCV文档:http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html
转换 CV_YCrCb2BGR 似乎正是您正在寻找的。它使用与您链接的stackoverflow答案中提到的相同系数(完整范围为1.403,0.714,0.344和1.773)。