YUV420p-RGB

// 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里面有解释。

你可能感兴趣的:(YUV420p-RGB)