Эта работа находится на кодеке MPEG, который должен принимать YUV-файл в качестве необработанного видео. Ниже приводится код, я использую, чтобы преобразовать файл YUV в RGBОшибка в clipvalue() в matlab
fileName = 'bus.y4m';
width = 250;
height = 250;
nrFrame = 10;
fileId = fopen(fileName, 'r');
subSampleMat = [1, 1; 1, 1];
dummy = fgetl(fileId); % Skip file header
%progressbar
for f = 1:nrFrame
%f
% Skip frame header
dummy = fgetl(fileId);
fprintf('fileID = %i',fileId);
% read Y component
buf = fread(fileId, width * height, 'uchar');
imgYuv(:, :, 1) = reshape(buf, width, height).'; % reshape
% read U component
buf = fread(fileId, width/2 * height/2, 'uchar');
buf = reshape(buf, width/2, height/2).';
imgYuv(:, :, 2) = kron(buf, subSampleMat); % reshape and upsample
% read V component
buf = fread(fileId, width/2 * height/2, 'uchar');
buf = reshape(buf, width/2, height/2).';
imgYuv(:, :, 3) = kron(buf, subSampleMat); % reshape and upsample
% convert YUV to RGB
imgRgb = reshape(convertYuvToRgb(reshape(imgYuv, height * width, 3)), height, width, 3);
mov(f) = im2frame(imgRgb);
progressbar(f/nrFrame)
end
fclose(fileId);
Я получаю следующую ошибку
Неопределенная функция «clipValue» для входных аргументов типа «двойной».
Ошибка в convertYuvToRgb (строка 11)
= uint8 RGB (clipValue (RGB, 0, 255));
Ошибка в conv (строка 32) imgRgb = изменить форму (конвертироватьYuvToRgb (изменить форму (imgYuv, высота * ширина, 3)), высота, ширина, 3);
Ошибка в перспективе (строка 64)
Evalin ('вызывающего абонента, [Скрипт ';']);
Что могло бы пойти не так?