% 读取avi格式视频,并转换成mat格式;
% 彩色图像,三通道单独存储;
clc;
clear all;
obj = VideoReader('E:\示例图像\扭曲帧\1.avi\1.mp4');
Frames =im2double(read(obj));
for i=1:size(Frames,3)
temR = Frames(:,:,i); temR = imresize(temR,[200,300]); framesR(:,:,i)=temR(:,:,1); %R通道
% temG = Frames(:,:,i); temG = imresize(temG,[200,300]); framesG(:,:,i)=temG(:,:,2); %G通道
% temB = Frames(:,:,i); temB = imresize(temB,[200,300]); framesB(:,:,i)=temB(:,:,3); %B通道
end
save 'E:\示例图像\扭曲帧\1.avi\R' framesR; % 保存
% save 'E:\示例图像\扭曲帧\1.avi\G' framesG;
% save 'E:\示例图像\扭曲帧\1.avi\B' framesB;
问题:如果三通道同时保存,可能会遇见出错:“索引超出矩阵维度。”,只需每个通道单独提取即可
% .mat文件转avi视频文件
load 'E:\示例图像\扭曲帧\下往上视频\下往上2\11.mat'
videoName = 'Bolt.avi';%表示将要创建的视频文件的名字
fps = 15; %帧率
if(exist('videoName','file'))
delete videoName.avi
end
%生成视频的参数设定
aviobj=VideoWriter(videoName); %创建一个avi视频文件对象,开始时其为空
aviobj.FrameRate=fps;
open(aviobj);%Open file for writing video data
%读入图片
for i=1:size(frames,3)
Frames=im2uint8(frames(:,:,i)); % 图像类型转换
Frames=imresize(Frames,[200,300]); % 尺寸修正
writeVideo(aviobj,Frames); % 保存
end
close(aviobj);% 关闭创建视频