Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

KR / KR

.m
Скачиваний:
1
Добавлен:
18.06.2024
Размер:
2 Кб
Скачать
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);
Соседние файлы в папке KR