2017-02-04 16 views
0

Эта работа находится на кодеке 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 ('вызывающего абонента, [Скрипт ';']);

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

ответ

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.

enter image description here