如何用MATLAB为小姐姐跳舞视频增添另一个小姐姐跳舞进度条
Posted slandarer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用MATLAB为小姐姐跳舞视频增添另一个小姐姐跳舞进度条相关的知识,希望对你有一定的参考价值。
注: 本人非常清楚这项任务使用pr会简单很多,此篇文章只是为了探究matlab能干啥的边界。并作为一个熟悉matlab矩阵操作和视频音频操作的例子。
效果如下:
(怕侵权就只放个动图)
可以看到小姐姐的舞蹈非常让人上头哈!!!!
材料准备:
1首先需要准备一个小姐姐的视频:
(完整素材包放在文章最后)
2需要准备一系列小姐姐跳舞的png图片,放在pic文件夹里:
完整代码:
其实原理很简单,就只是计算图片应该到的位置,把图片放到该放的地方,至于怎么样让声音和视频和在一起可以看这一篇:
MATLAB 如何将视频和音频写入同一个文件?以视频上下颠倒为例,附带详细注释
function moveAddWaitBar2
videoPath='test.mp4';
picPath='.\\pic\\';%图片素材路径
movObj=VideoReader(videoPath);
[AUDIO,Fs]=audioread(videoPath);
audioLen=round(size(AUDIO,1)./movObj.NumFrames);
videoFWriter=vision.VideoFileWriter('result.avi','FrameRate',movObj.FrameRate);
videoFWriter.AudioInputPort=true;
files=dir(fullfile(picPath,'*.png')); %图片格式png
picNum=size(files,1);
% 导入图片素材
for i=1:picNum
fileName=strcat(picPath,files(i).name);
[img,~,alp]=imread(fileName);
imgSet{i}=img;
alpSet{i}=alp;
end
close all;
fig=figure(1);
fig.NumberTitle='off';
[m,n,~]=size(read(movObj,1));
for k=1:movObj.NumFrames
frame=read(movObj,k);
tImg=imgSet{mod(k-1,picNum)+1};
tAlp=alpSet{mod(k-1,picNum)+1};
[M,N,~]=size(tImg);
% 动图定位
tN=round(k/movObj.NumFrames*n);
tNSet=tN+1-floor(N/2):tN+ceil(N/2);
if any(tNSet<=0)
tNSet(tNSet<=0)=[];
tNSet2=tNSet+N-tNSet(end);
else
tNSet(tNSet>n)=[];
tNSet2=tNSet-tNSet(1)+1;
end
% 动图像素写入每一帧图像
tPart=frame(end-M+1:end,tNSet,:);
tPart2=tImg(:,tNSet2,:);
tPart3=tAlp(:,tNSet2);
tPart_R=tPart(:,:,1);
tPart_G=tPart(:,:,2);
tPart_B=tPart(:,:,3);
tPart2_R=tPart2(:,:,1);
tPart2_G=tPart2(:,:,2);
tPart2_B=tPart2(:,:,3);
tPart_R(tPart3~=0)=tPart2_R(tPart3~=0);
tPart_G(tPart3~=0)=tPart2_G(tPart3~=0);
tPart_B(tPart3~=0)=tPart2_B(tPart3~=0);
tPart(:,:,1)=tPart_R;
tPart(:,:,2)=tPart_G;
tPart(:,:,3)=tPart_B;
changeFrame=frame;
changeFrame(end-M+1:end,tNSet,:)=tPart;
changeFrame=uint8(changeFrame);
% 音频视频写入
videoFWriter(changeFrame,AUDIO((k-1)*audioLen+1:k*audioLen,:));
imshow(changeFrame)
fig.Name=['Frame:[',num2str(k),'/',num2str(movObj.NumFrames),']'];
end
release(videoFWriter);
end
完整素材包:
链接:https://pan.baidu.com/s/1l5eCW-el4CR_R8worvaP-w
提取码:t9xe
以上是关于如何用MATLAB为小姐姐跳舞视频增添另一个小姐姐跳舞进度条的主要内容,如果未能解决你的问题,请参考以下文章