视频帧差法实例(matlab实现)

视频帧差法:打开摄像头(视频文件),获取图像,完成前后两帧图像相减,动态显示结果,将帧差的结果存储为视频文件。

clc
clear

videoObj = VideoReader('a1.avi');%读视频文件 
nframes = get(videoObj, 'NumberOfFrames');%获取视频文件帧个数 

for k = 1 : nframes-1 
    currentFrame1 = read(videoObj, k);%读取第i帧 
    currentFrame2 = read(videoObj, k+1);
   
    subplot(2,1,1);%创建图像显示窗口并获取第一个窗口句柄
    imshow(currentFrame1); % Convert to grayscale.
    
    grayFrame1 = rgb2gray(currentFrame1);%灰度化 
    grayFrame2 = rgb2gray(currentFrame2);
    difgrayFrame= grayFrame2 - grayFrame1;%邻帧差 
    subplot(2,1,2);
    imshow(difgrayFrame); 
    imwrite(difgrayFrame,['D:\picture_processing\part2\save_processing\',num2str(k) ,'.jpg']);
end

srcDic = uigetdir('D:\picture_processing\part2\save_processing\');% 将每步处理后的图像到某个目录下
cd(srcDic); %读取所有的jpg图片
allnames = struct2cell(dir('*.jpg'));
[difgrayFrame,len]=size(allnames);
aviobj = VideoWriter('D:\picture_processing\part2\save_video2');%视频存储位置
aviobj.FrameRate = 10; %设置帧率

open(aviobj) %制作由65张图片构成的视频
for i = 1:65
     name = allnames{1,i};
     frame = imread(name);
     writeVideo(aviobj,frame);
end
close(aviobj)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值