matlab实现延时摄影

本文介绍如何利用MATLAB实现延时摄影效果,通过间隔拍摄同一场景并制作成avi格式的视频,适用于纪录片和风光摄影,也可实现类似播放PPT的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

纪录片或者是风光宣传中常见的摄影方式,每隔一段时间对同一场景进行拍摄并将获得的图片制成视频达到一种“快速播放”的效果。如果调慢帧速率也可以起到播放ppt的效果。

综合参考网上的代码做了一些简单的改动,使代码用起来更加方便可控。输出文件为avi格式。

function VideofromPics(dn,PicFormat,aviname,fv,Qual)
%dn 路径名;picformat 图片格式; aviname 输出文件名(不要加格式); fv 帧速率/秒;Qual: 图像质量(%)
%eg1.VideofromPics('E:\照片\湖南try\','jpg','South to the Lake',10,100);
%存储于默认路径
%eg2.VideofromPics('E:\照片\湖南try\','jpg','C:\Users\12524\Desktop\South to the Lake',5,70);
%存储于指定路径
if ~exist(dn, 'dir')
        error('dir not exist!!!!');
end
PicName=fullfile(dn, strcat('*.',PicFormat));
PicName=dir(PicName);
AviFileObj = VideoWriter(aviname);
AviFileObj.FrameRate = fv;%帧速率/秒
AviFileObj.Quality =Qual;%图像质量
 
open(AviFileObj);
 
ConvertFrameNum = length(PicName);
 
times=0;
tic;
for k = 1 : ConvertFrameNum
	Img = imread([dn PicName(k).name]);
    Mov = im2frame(Img);
    if ~isempty( AviFileObj.Height)
            if size(Img,1) ~= AviFileObj.Height || size(Img,2) ~= AviFileObj.Width
                close(AviFileObj);
                delete(aviname);
                error('所有图片的尺寸要相同!!');
            end
    end
	writeVideo(AviFileObj, Mov);
end
toc;
% Close file
close(AviFileObj);
times=round(ConvertFrameNum/fv);
disp([' 视频时长' num2str(times) '秒' ]);%显示视频时长
BS=dir([aviname '.avi']);
MBS=BS.bytes/(1024^2);
disp([' 视频大小' num2str(MBS) 'Mb' ]);%显示视频大小
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值