Как сохранить файл на y4m из Matlab? - PullRequest
1 голос
/ 16 января 2011

Итак, у меня есть фильм в формате фильма Matlab (на самом деле, всего несколько кадров RGB), и я хотел бы сохранить его в виде файла y4m. (использовать с x.264). У меня есть вся информация, необходимая для написания заголовка фрейма в начале, и у меня есть функции, которые конвертируют фрейм RGB в YUV, но каждый раз, когда я пытаюсь его сохранить, он сбоку и отслеживание отключено , Я также пытаюсь конвертировать его в C420. Вот моя функция, в настоящее время:

function saveMovToY4m(mov, fileName, f, width, height, fpsNum, fpsDen, inter, ascNum, ascDen)

fileId = fopen(fileName, 'w');
fprintf(fileId, 'YUV4MPEG2 W%d H%d F%d:%d I%c A%d:%d C420jpeg\n', width, height, fpsNum, fpsDen, inter, ascNum, ascDen);
for frame = 1:f-1
    frame
    imgRgb = frame2im(mov(frame));
    imgYuv = (convertRgbToYuv(imgRgb, width, height));
    fprintf(fileId,'FRAME\n');
    % Print Y component
    buf = reshape(imgYuv(:,:,1),width*height,1);
    buf = buf;
    fwrite(fileId, buf, 'uint8');

    % Print U component
    Cb = reshape(imgYuv(:,:,2),width*height,1);
    CBdown = downsample(Cb, 4);
    fwrite(fileId, CBdown, 'uint8');   

    % Print V component
    Cbr = reshape(imgYuv(:,:,3),width*height,1);
    CBrDown = downsample(Cbr, 4);
    fwrite(fileId, CBrDown, 'uint8');
end
fclose(fileId);
end

1 Ответ

1 голос
/ 16 января 2011

Для "вбок" (я предполагаю, что вы имеете в виду повернутый) вам просто нужно повернуть массив (поменяйте местами столбцы со строками). Для отслеживания, если он отключен на фиксированную величину, кажется, что это связано с вашим изменением формы (попробуйте (ширина - 1) * высота и посмотрите, что это делает, и оттуда)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...