Ошибка в clipvalue() в матлабе

Эта работа связана с кодеком MPEG, который должен принимать файл YUV в качестве необработанного видео на выходе. Ниже приведен код, который я использую для преобразования файла YUV в RGB.

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 для входных аргументов типа double.

Ошибка в convertYuvToRgb (строка 11)

rgb = uint8 (clipValue (rgb, 0, 255));

Ошибка в преобразовании (строка 32) imgRgb = изменить форму (convertYuvToRgb (изменить форму (imgYuv, высота * ширина, 3)), высота, ширина, 3);

Ошибка при запуске (строка 64)

evalin('звонящий', [сценарий ';']);

Что могло пойти не так??


person Rohit S    schedule 04.02.2017    source источник


Ответы (1)


Проблема в том, что convertYuvToRgb.m зависит от clipValue.m.

Я думаю, что у вас не хватает некоторых файлов...

  1. Перейдите по адресу https://www.mathworks.com/matlabcentral/fileexchange/6318-convert-yuv-cif-4-2-0-video-file-to-image-files/content/YUV2Image/convertYuvToRgb..m
  2. Загрузите YUV2Image.zip.
  3. Распакуйте YUV2Image.zip. Убедитесь, что все извлеченные файлы находятся в одной папке.
  4. Загрузите и извлеките файл progressbar.zip из https://www.mathworks.com/matlabcentral/fileexchange/6922-progressbar (скопируйте progressbar.m в ту же папку, что и YUV2Image).
  5. Поместите исходный файл в папку...

Я не смог найти bus.y4m, поэтому протестировал его с bus_cif.y4m.

введите здесь описание изображения

person Rotem    schedule 05.02.2017