
Добавил:
KaFaka
t.me
Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:KR / KR
.m clc;
clear all;
close all;
% Открываем исходный видеофайл
input_file_name = 'input_video.mp4';
video_in = VideoReader(input_file_name);
% Создаем объект для записи видео
output_file_name = 'output_video.mp4';
video_out = VideoWriter(output_file_name, 'MPEG-4');
open(video_out);
% Читаем свойства видео
width = video_in.Width;
height = video_in.Height;
frameRate = video_in.FrameRate;
numOfFrames = round(video_in.Duration * frameRate);
% Подготовка структуры для обработанного видео
mov = struct('cdata', [], 'colormap', []);
% Цикл по кадрам видео
for k = 1 : numOfFrames
% Чтение одного кадра
frame = readFrame(video_in);
% Разделение кадра на R, G, B компоненты
R = frame(:,:,1);
G = frame(:,:,2);
B = frame(:,:,3);
% Расчет сдвига для текущего кадра (плавное изменение)
shiftR = round(sin(pi * (k-1) / (2*numOfFrames)) * 10); % сдвиг влево для R
shiftB = round(cos(pi * (k-1) / (2*numOfFrames)) * 10); % сдвиг вправо для B
% Сдвигаем компоненты R и B
R_shifted = circshift(R, [0 -shiftR]);
B_shifted = circshift(B, [0 shiftB]);
% Собираем обратно в кадр
frame_shifted = cat(3, R_shifted, G, B_shifted);
% Записываем кадр в выходной файл видео
writeVideo(video_out, frame_shifted);
% Сохраняем кадр для возможного воспроизведения в MATLAB
mov(k).cdata = frame_shifted;
end
% Закрываем файл выходного видео
close(video_out);
% Воспроизведение видео в MATLAB
hf = figure;
set(hf, 'position', [150 150 width height]);
movie(hf, mov, 1, frameRate);
clear all;
close all;
% Открываем исходный видеофайл
input_file_name = 'input_video.mp4';
video_in = VideoReader(input_file_name);
% Создаем объект для записи видео
output_file_name = 'output_video.mp4';
video_out = VideoWriter(output_file_name, 'MPEG-4');
open(video_out);
% Читаем свойства видео
width = video_in.Width;
height = video_in.Height;
frameRate = video_in.FrameRate;
numOfFrames = round(video_in.Duration * frameRate);
% Подготовка структуры для обработанного видео
mov = struct('cdata', [], 'colormap', []);
% Цикл по кадрам видео
for k = 1 : numOfFrames
% Чтение одного кадра
frame = readFrame(video_in);
% Разделение кадра на R, G, B компоненты
R = frame(:,:,1);
G = frame(:,:,2);
B = frame(:,:,3);
% Расчет сдвига для текущего кадра (плавное изменение)
shiftR = round(sin(pi * (k-1) / (2*numOfFrames)) * 10); % сдвиг влево для R
shiftB = round(cos(pi * (k-1) / (2*numOfFrames)) * 10); % сдвиг вправо для B
% Сдвигаем компоненты R и B
R_shifted = circshift(R, [0 -shiftR]);
B_shifted = circshift(B, [0 shiftB]);
% Собираем обратно в кадр
frame_shifted = cat(3, R_shifted, G, B_shifted);
% Записываем кадр в выходной файл видео
writeVideo(video_out, frame_shifted);
% Сохраняем кадр для возможного воспроизведения в MATLAB
mov(k).cdata = frame_shifted;
end
% Закрываем файл выходного видео
close(video_out);
% Воспроизведение видео в MATLAB
hf = figure;
set(hf, 'position', [150 150 width height]);
movie(hf, mov, 1, frameRate);