有屏幕的地方就有bad apple
那么作为一名工科生,熟练的操♂作马桶萝卜(matlab)是一项基本技能
下面开始讲解如何用matlab制作别具一格的“矩阵苹果”~
实验环境
matlab R2018a
原版bad apple视频
技术要求
可以即时演算图形
可以将处理后的每帧图形合并成新的视频
先上代码
%trans.m
%此脚本用来将bad apple视频每帧图形进行处理,获取轮廓后再绘制出来。
clear;
clc;
se = strel('line',11,90);
obj=VideoReader('bap.mp4');
num=obj.NumberOfFrames;
for i=1:6570
frame=read(obj,i);
frame=im2bw(frame);
lunkuo=bwperim(frame);%此函数用来获取轮廓
lunkuo=imdilate(lunkuo,se);
imshow(lunkuo);
%生成帧图,路径可自由修改
%若将下面三行注释符号去掉,程序将自动把每帧图片保存到本地,经测试,一共6570帧、381MB
%lujing=strcat('E:/CODE-MATLAB/lunkuo/',num2str(i));
%lujing=strcat(lujing,'.jpg');
%imwrite(lunkuo,lujing)
end
%createavi.m
%此程序是将刚才保存到本地的帧图合称为一个完整的视频
clear;
clc;
WriterObj=VideoWriter('lunkuo.avi', 'Uncompressed AVI');
open(WriterObj);
for i=1:6570
pic='E:/CODE-MATLAB/lunkuo/';%存放帧图的路径
pic=strcat(pic,num2str(i));
ppic=strcat(pic,'.jpg');
frame=imread(ppic);% 读取图像,放在变量frame中
disp(ppic);
writeVideo(WriterObj,frame);% 将frame放到变量WriterObj中
end
close(WriterObj);
好啦~核心代码就以上两个
也可以直接从gayhub下载喔:https://github.com/L0stAngel/mataplle
下面放上几张效果图
在实际绘制的过程中画面显示比较卡顿,原因是这里没有修改图片分辨率大小,且即时演算消耗了大量时间。
若想拥有丝滑的体验,可以用第二个脚本(createavi.m)生成一个流畅的视频