matlab avi视频文件与mat文件 互相转换

% 读取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);% 关闭创建视频

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值