第一部分是打开文件并将其加载到yuv1缓冲区。 下一步是正确读取YUV420p数据 我使用wiki的这个公式
size.total = size.width * size.height;
y = yuv[position.y * size.width + position.x];
u = yuv[(position.y / 2) * (size.width / 2) + (position.x / 2) + size.total];
v = yuv[(position.y / 2) * (size.width / 2) + (position.x / 2) + size.total + (size.total / 4)];
下一阶段是从y u v获取值并使用下面的公式转换为rgb
B = 1.164(Y - 16)+ 2.018(U - 128)
G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
R = 1.164(Y-16)+ 1.596(V-128)
获取RGB后,我们将它们正确加载回缓冲区并关闭文件。
但是我得到了这个错误错误C2064:term不会评估为一个带有302个参数的函数 在三个公式中。
有人可以帮助我吗
错误代码
r1 = 1.164(y1 - 16) + 1.596(v1 - 128) + 0;
g1 = 1.164(y1 - 16) - 0.813(v1 - 128) - 0.391(u1 - 128);
b1 = 1.164(y1 - 16)+ 0 + 2.018(u1 - 128);
答案 0 :(得分:1)
您是否只是将数学公式粘贴到C代码中?那不行。
您需要修复变量的大写/小写。你需要一个明确的乘法符号:
b = 1.164 * (y - 16) + 2.018 * (u - 128);
g = 1.164 * (y - 16) - 0.813 * (v - 128) - 0.391 * (u - 128);
r = 1.164 * (y - 16) + 1.596 * (v - 128);
根据b,g和r变量的类型,您需要将浮点结果转换或舍入为整数值。