关闭

利用MATLAB进行图像和视频之间的转换

标签: matlab代码
138人阅读 评论(0) 收藏 举报
分类:

函数主体:

clc;clear;
%% parameter settings
framepath = 'f:\testdata_backup\View_001\';
videoname = 'yb.avi';
fps = 29;
startFrame = 0;
endFrame = 220;
quality = 80;


%% 将图片序列转为视频
video=frames2Video(framepath,videoname,quality,fps,startFrame,endFrame);


%% 将视频转为图片序列
framesPath = 'frames\';
videoname = 'yb.avi';
frame = Video2frames(framesPath,videoname);


子函数:

(1)视频到图片

function frame = Video2frames( framesPath,videoname )
%% framesPath:图片的存储路径;
%% videoname:视频名称;


%   此处显示详细说明
fileName = videoname; 
obj = VideoReader(fileName);
numFrames = obj.NumberOfFrames;% 帧的总数
 for k = 1 : numFrames% 读取数据
     frame = read(obj,k);
     imshow(frame);%显示帧
     imwrite(frame,strcat(framesPath,num2str(k),'.jpg'),'jpg');% 保存帧
 end
end

(2)图片到视频

function video=frames2Video(framesPath,videoname,quality,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);          %% 注意此处delete的格式
    end
    %生成视频的参数设定
    aviobj=VideoWriter(videoname);   %创建一个avi视频文件对象,开始时其为空
    aviobj.FrameRate = fps;
    aviobj.Quality=quality; 
    open(aviobj);
 
%     aviobj.compression=Compressed;
    %读入图片
    for i=startFrame:endFrame    
        fileName=sprintf('frame_%04d',i);    %根据文件名而定 我这里文件名是00000001.jpg 00000002.jpg ....    
        frames=imread([framesPath,fileName,'.jpg']);
        
        if size(frames,3)==3
         frames = rgb2gray(frames);
        end
    
    %% 如果输入图片太大,需要进行缩放,否则算法计算速度太慢;
    frames = imresize(frames,[240 320]);     % 尺寸应该是[120 160]=[numrows numcols]);
%     frames = filter2(fspecial('average',3),frames);
    
        writeVideo(aviobj,uint8(frames));
    end
        video = aviobj;
        close(aviobj); % 关闭创建视频
    end

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7805次
    • 积分:206
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:3篇
    • 译文:0篇
    • 评论:3条
    最新评论