% 讀取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);% 關閉建立視訊