Преобразуйте между видеофайлами и последовательностями файлов изображений с помощью VideoReader и VideoWriter.
Файл примера под названием shuttle.avi содержит 121 систему координат. Преобразуйте системы координат в файлы изображений с помощью VideoReader и imwrite функция. Затем преобразуйте файлы изображений в файл AVI с помощью VideoWriter.
Создайте временную рабочую папку, чтобы сохранить последовательность изображений.
workingDir = tempname;
mkdir(workingDir)
mkdir(workingDir,'images')Создайте VideoReader использовать для рамок считывания из файла.
shuttleVideo = VideoReader('shuttle.avi');Цикл через видео, читая каждую систему координат в ширину высотой 3 массивами под названием img. Выпишите каждое изображение к файлу JPEG с именем в форме imgN.jpg, где N является номером системы координат.
| img001.jpg |
| img002.jpg |
| ...|
| img121.jpg |
ii = 1; while hasFrame(shuttleVideo) img = readFrame(shuttleVideo); filename = [sprintf('%03d',ii) '.jpg']; fullname = fullfile(workingDir,'images',filename); imwrite(img,fullname) % Write out to a JPEG file (img1.jpg, img2.jpg, etc.) ii = ii+1; end
Найдите все имена файлов JPEG в images папка. Преобразуйте набор названий картинки к массиву ячеек.
imageNames = dir(fullfile(workingDir,'images','*.jpg')); imageNames = {imageNames.name}';
Создайте VideoWriter объект, который создает файл Motion JPEG AVI по умолчанию.
outputVideo = VideoWriter(fullfile(workingDir,'shuttle_out.avi'));
outputVideo.FrameRate = shuttleVideo.FrameRate;
open(outputVideo)Цикл через последовательность изображений, загрузите каждое изображение, и затем запишите его в видео.
for ii = 1:length(imageNames) img = imread(fullfile(workingDir,'images',imageNames{ii})); writeVideo(outputVideo,img) end
Завершите видеофайл.
close(outputVideo)
Создайте объект читателя.
shuttleAvi = VideoReader(fullfile(workingDir,'shuttle_out.avi'));Создайте struct фильма MATLAB из видеокадров.
ii = 1; while hasFrame(shuttleAvi) mov(ii) = im2frame(readFrame(shuttleAvi)); ii = ii+1; end
Измените размер текущей фигуры и осей на основе ширины и высоты видео, и просмотрите первую систему координат фильма.
figure imshow(mov(1).cdata, 'Border', 'tight')
Воспроизведите фильм однажды в частоте кадров видео.
movie(mov,1,shuttleAvi.FrameRate)

Видео любезности Шаттла НАСА.