保存下面的代码到matlab文件中,path存放照片文件夹,照片文件格式可以修改(这里是bmp),保存的avi视频文件在videoName变量中保存。
效果如下图:
代码:
close all
clear all
clc
set(gcf,'NumberTitle','off','Name','NAZHA');
img = imread('nazha.jpg');%注意图片路径的选择
imshow(img);
[y fs] = audioread('张碧晨 - 今后我与自己流浪.mp3');%音频读取
sound(y,fs);%播放背景音乐
title('Howard Wonanut 2019');
%pause(1);
%生成视频的参数设定
videoName = 'nazha.avi'
fps = 15
aviobj=VideoWriter(videoName);
aviobj.FrameRate=fps;
open(aviobj)
path = 'nazha_bmp\';%注意文件夹路径的选取,注意该文件夹下需要大量图片,以方便做成动画效果
dir1 = dir([path '*.bmp']);
for i = 1:length(dir1)
disp(i);
img = imread([path dir1(i).name]);
img = rgb2gray(img);
detection = edge(img,'sobel');%算子边缘检测,roberts,sobel,log三种算子的效果都不如canny
set(gcf,'NumberTitle','off','Name','NAZHA |Howard Wonanut');
[x,y] = find(detection ==1);
matrix = ones(585, 1040);
for j =1:length([x,y])
matrix(x(j),y(j)) = 0;
end
file_name = sprintf('nazha_after/%d.tif', i)
imwrite(uint8(matrix),file_name)
writeVideo(aviobj,matrix);
scatter(y,-x,'.');%描点
axis([0 1040 -585 0]);
pause(0.02);
end
close(aviobj)