zoukankan      html  css  js  c++  java
  • 将图片序列转化为视频文件


    %下面不规范的注释就不用介意了
    %手动选择存有图片的文件夹
    srcDic = uigetdir('C:UsersNEVERGUVEIPDesktop机器学习my_train');
    cd(srcDic);
    %读取图片名字
    allnames = struct2cell(dir('*.jpg'));
    [k,len]=size(allnames);
    aviobj = VideoWriter('driver.avi');%给视频起名字
    aviobj.FrameRate = 5;%设置帧率
    open(aviobj)
    %创作视频
    for i = 1:len
        name = allnames{1,i};
        frame = imread(name);
        writeVideo(aviobj,frame);
    end
    close(aviobj)
    %在你存放图片的路径下就会又视频了,高兴,这么简单呀,哈哈哈






    %这个没有试
    一,将图片序列转化为视频文件
    function video=frames2Video(framesPath,videoName,quality,Compressed,fps,startFrame,endFrame)
    %framesPath :图像序列所在路径,同时要保证图像大小相同
    %videoName:  表示将要创建的视频文件的名字
    %quality:    生成视频的质量 0-100
    %Compressed: 压缩类型, 'Indeo3'(默认), 'Indeo5', 'Cinepak', 'MSVC', 'RLE' or 'None'
    %fps: 帧率
    %startFrame ,endFrame ;表示从哪一帧开始,哪一帧结束
    
    if(exist('videoName','file'))
        delete videoName.avi
    end
    
    %生成视频的参数设定
    aviobj=avifile(videoName);  %创建一个avi视频文件对象,开始时其为空
    aviobj.Quality=quality;
    aviobj.Fps=fps;
    aviobj.compression=Compressed;
    
    %读入图片
    for i=startFrame:endFrame
        fileName=sprintf('%08d',i);    %根据文件名而定 我这里文件名是00000001.jpg 00000002.jpg ....
        frames=imread([framesPath,fileName,'.jpg']);
        aviobj=addframe(aviobj,uint8(frames));
    end
    aviobj=close(aviobj); % 关闭创建视频
    end
    在command window里输入
    path='你的文件路径';
    frames2Video(path,'dog',90,'None',5,1,32);
    二,视频文件转化为图片
    function avi2Frames(path)
    mov=aviread(path);          
    framesNum=size(mov,2);                                           
                                                               
     for i=1:framesNum
      frames=frame2im(mov(i));                              
      str=strcat('a',int2str(i),'.jpg');                         
      imwrite(frames,str);
    
    end
    end
    代码未做优化,可以先预分配空间同时对于很多使用程序健壮的语句没有加进去


  • 相关阅读:
    Java 练习(经典例题: 生产者/消费者问题)
    Java 基础(线程的通信)
    Java 练习(线程的同步)
    Java 基础( ReentrantLock )
    Java 基础(线程的死锁问题)
    Java基础(单实例设计模式懒汉式解决线程安全)
    Java 基础(同步方法解决线程安全问题)
    Java 基础(Thread类的有关方法,线程的调度)
    Java 基础(线程的生命周期, 同步代码块解决线程安全)
    Java 基础(以实现 Runnable 接口的方式创建多线程)
  • 原文地址:https://www.cnblogs.com/neverguveip/p/9457248.html
Copyright © 2011-2022 走看看