为什么二到第十帧变成了粉色的了?

原文件是yuv444的图像,有10帧,第一帧读取正确,到了之后的就变成了粉色的,应该怎么改呢?

#include<iostream>
#include<fstream>

using namespace std;
typedef struct YUVPixel {
    short int Y;
    short  int U;
    short int V;
} YUVPixel;
int main()
{
    FILE* orignal_data = fopen("ParkScene_1920x1080_24_16bit_444.yuv", "r");//读取yuv文件
    FILE* f_r = fopen("r_data2.yuv", "w");//存入/写入的文件
    if (orignal_data == NULL)
        printf("open file error:\n");
    unsigned int width = 1920, height = 1080;//yuv大小已知
    for(int k=0;k<10;k++)
    {
        short int* raw_16bit_pixels = (short int*)malloc(width * height * sizeof(YUVPixel));
        fread(raw_16bit_pixels, 1, width * height * sizeof(YUVPixel), orignal_data);   //暂时忽略其返回值
        YUVPixel yuv_pixel;
        unsigned char  Ylow, Yhigh, Ulow, Uhigh, Vlow, Vhigh;
        unsigned  short int Ytemp, Utemp, Vtemp;
        for (int j = 0;j < height;j++)
            for (int i = 0;i < width;i++)
            {
                yuv_pixel.Y = raw_16bit_pixels[1920 * j + i];//读入Y
                yuv_pixel.U = raw_16bit_pixels[1920 * j + i + 1920 * 1080];//读入U
                yuv_pixel.V = raw_16bit_pixels[1920 * j + i + 1920 * 1080 * 2];//读入V
                Ylow = (yuv_pixel.Y) & 0xff;
                Yhigh = (yuv_pixel.Y) >> 8;
                Ytemp = Yhigh;
                Ytemp <<= 8;
                Ytemp += Ylow;//Y的合成
                Ulow = (yuv_pixel.U) & 0xff;
                Uhigh = (yuv_pixel.U) >> 8;
                Utemp = Uhigh;
                Utemp <<= 8;
                Utemp += Ulow;//U的合成
                Vlow = (yuv_pixel.V) & 0xff;
                Vhigh = (yuv_pixel.V) >> 8;
                Vtemp = Vhigh;
                Vtemp <<= 8;
                Vtemp += Vlow;//V的合成
                raw_16bit_pixels[1920 * j + i] = Ytemp;
                raw_16bit_pixels[1920 * j + i + 1920 * 1080] = Utemp;
                raw_16bit_pixels[1920 * j + i + 1920 * 1080 * 2] = Vtemp;
            }
        fwrite(raw_16bit_pixels, 1, width * height * sizeof(YUVPixel), f_r);   //暂时忽略其返回值
        free(raw_16bit_pixels);
    }
    fclose(f_r);
    return 0;
}

第一帧

img


接下来的几帧

img

我的解答思路和尝试过的方法
我想要达到的结果

想全部帧数读取正确

用opencv读