// i, j 为像素位置。for一遍。
for (int j = 0; j < height; j++) {
for (int i = 0; i < width; i++) {
int yy = y[(j * width) + i];
int uu = u[((j / 2) * (width / 2)) + (i / 2)];
int vv = v[((j / 2) * (width / 2)) + (i / 2)];
r = 1.164 * (yy - 16) + 1.596 * (vv - 128);
g = 1.164 * (yy - 16) - 0.813 * (vv - 128) - 0.391 * (uu - 128);
b = 1.164 * (yy - 16) + 2.018 * (uu - 128);
*ptr++ = CLAMP(r);
*ptr++ = CLAMP(g);
*ptr++ = CLAMP(b);
}
}
转换公式有很多不同的版本。Opencv里面有解释。
网友评论