matlab 《华强买瓜》二值化视频案例

先将视频读入后将每帧进行图像二值化处理,然后在子文件夹下生成二值化之后的图片,代码如下

v = VideoReader('f25.mp4');
ii = 1;

while hasFrame(v)
   img = readFrame(v);
 
   thresh = graythresh(img);     %自动确定二值化阈值
I2=im2bw(img,thresh);     %图像二值化
   
   %    filename = ['./jpg/'sprintf('%03d',ii) '.jpg'];
 a1='./jpg/';
 a2=num2str(ii);
 a3='.jpg';
 filename=[a1,a2,a3]; %生成文件名
 
   imwrite(I2,filename)    % Write out to a JPEG file (img1.jpg, img2.jpg, etc.)
   ii = ii+1;
   disp(ii)

end

然后将每张图片用imread显示出来,随后将图片保存在子文件夹,然后关闭窗口,一直至for循环结束,循环次数就是图片的张数即视频总帧数,代码如下

clear
for i=1:3141
%1314即为视频总帧数
    k1=num2str(i);
    k2='.jpg';
    k=[k1,k2];
    a=imread(k);
    b=imresize(a,1/10);
    scrsz = get(0,'ScreenSize');

figure1=figure('Position',[0 30 scrsz(3) scrsz(4)-95]);
    
    spy(b)
    k3='./plotimg/';
    filename=[k3,k];
    saveas(gcf,filename)
    close
    disp(i)
end

接下来将生成的图片一张一张写入到新建视频文件,代码如下

outputVideo = VideoWriter('shuttle_out.mp4');
outputVideo.FrameRate = 25;%这里是视频每秒钟的帧数
open(outputVideo)
for ii = 1:3141
   img = imread([num2str(ii),'.jpg']);
   writeVideo(outputVideo,img)
   ii
end
close(outputVideo)
%close一定要记得写上,不然生成的视频文件有几率出现错误

在文件夹中就可以找到视频文件。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值