Преобразуйте между видеофайлами и последовательностями файлов изображений с помощью 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)
Создайте объект reader.
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)
Видео космического шаттла предоставлено НАСА.