matlab 实践程序2——批量将seq文件转化为avi文件

该程序实现将一文件夹内的所有seq文件转化为avi文件。实现前提是准备好toolbox_master,将seq按照1.seq,2.seq的样式备好,

toolbox可见http://download.csdn.net/detail/jjff46/8131043。   统一文件重命名名可参照http://blog.csdn.net/jjff46/article/details/38902551

clear 

DIR='C:\Users\Administrator\Desktop\OlympicSports\triple_jump\';
file=dir(strcat(DIR,'*.seq'));
filenum=size(file,1);

backup=file;
for k=1:filenum

file(k,1).name=strcat(DIR,file(k,1).name);

end


for j=1:filenum
delete('D:\aa\*.jpg');
delete('D:\aa\*.png');
info = seqIo(file(j,1).name, 'getInfo' );
waittime=ceil(info.numFrames/info.fps);

Is = seqIo(file(j,1).name, 'toImgs', 'D:\aa', [1], [0],[info.numFrames-1],[]); %///error

pic=dir('D:\aa\*.jpg'); 
num=size(pic,1); 


    if num~=0

    for i=1:num 
    im(:,:,:,i)=imread(strcat('D:\aa\I',sprintf('%05d',i-1),'.jpg')); 
    imshow(im(:,:,:,i)) ;
    M(i) = getframe; 
    end 
    else 
    
    pic=dir('D:\aa\*.png'); 
    num=size(pic,1);
    
    for i=1:num 
    im(:,:,:,i)=imread(strcat('D:\aa\I',sprintf('%05d',i-1),'.png')); 
    imshow(im(:,:,:,i)) ;
    M(i) = getframe; 
    end 
    end


viodename=strcat(backup(j,1).name(1:2),'.avi');

movie2avi(M,viodename,'FPS',info.fps)%输出视频;
pause(waittime);
clear im
clear M
end

单个文件的转化程序

clc
clear
mm=10;
delete('D:\aa\*.jpg');
delete('D:\aa\*.png');
filename=strcat(num2str(mm),'.seq');
aa=strcat('C:\Users\Administrator\Desktop\OlympicSports\shot_put\',filename);

info = seqIo(aa, 'getInfo' );
Is = seqIo( aa, 'toImgs', 'D:\aa', [1], [0],[info.numFrames-1], [] ); %91是总帧数

pic=dir('D:\aa\*.jpg'); 

%取文件的数量:num 
num=size(pic,1); 

if num~=0

for i=1:num 
im(:,:,:,i)=imread(strcat('D:\aa\I',sprintf('%05d',i-1),'.jpg')); 
imshow(im(:,:,:,i)) ;
M(i) = getframe; 
end 
else 
    
    pic=dir('D:\aa\*.png'); 
    num=size(pic,1);
    
    for i=1:num 
    im(:,:,:,i)=imread(strcat('D:\aa\I',sprintf('%05d',i-1),'.png')); 
    imshow(im(:,:,:,i)) ;
    M(i) = getframe; 
    end 
end
    
movie2avi(M,'10.avi','FPS',info.fps)%输出视频;


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Matlab中的seq2seq是一种用于序列到序列(sequence-to-sequence)学习的机器学习模型。seq2seq模型通常用于处理具有不同长度的输入和输出序列的任务,例如机器翻译、语音识别和对话生成等。 在Matlab中,可以使用Deep Learning Toolbox来实现seq2seq模型。该工具箱提供了一系列函数和类,用于构建和训练seq2seq模型。 首先,需要定义一个Encoder网络和一个Decoder网络。Encoder网络将输入序列转换为一个固定长度的向量表示,而Decoder网络将该向量表示转换为输出序列。可以使用长短期记忆(LSTM)或门控循环单元(GRU)等循环神经网络作为Encoder和Decoder的基本单元。 接下来,使用sequenceInputLayer函数定义输入层,使用sequenceFoldingLayer函数将输入序列转换为时间序列数据,然后将其传递给Encoder网络。 对于Decoder网络,在输出层之前,可以使用attentionDecoderLayer函数引入注意力机制,以提高模型性能。同时,可以使用sequenceUnfoldingLayer函数将输出时间序列数据恢复为输出序列。 最后,使用trainNetwork函数对定义好的Encoder-Decoder模型进行训练。可以选择不同的优化器、损失函数和训练选项来获得最佳的模型性能。 通过使用Matlab中的seq2seq模型,可以轻松地实现序列到序列学习任务。这个强大的工具允许我们处理各种序列数据,并优化模型以获得最好的性能。无论是进行自然语言处理还是其他类型的序列建模任务,seq2seq模型都是一个值得尝试的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值