|

点击上方蓝字和“好玩的MATLAB”一起快乐玩耍吧!+ ]) L9 j- ^0 H _/ }1 x
/ v' R9 I' l9 m
xts1ec3wan364024880050.jpg
. F3 Y- A. J8 s& A+ Y1 p) X
好玩的matlab" L0 \3 D4 l$ b
带你解锁不一样的matlab新玩法
% z+ ?# w( _1 l$ g- B
4 Z. N8 L) {& u; g# w8 X在坐的小黑子们请收下这封律师函警告,喜欢此推文的小伙伴们记得点赞+关注+分享!
8 @' a% P" Q5 u( p6 o* J5 t
2n0lwjue5iy64024880150.png
1 b' ?+ y7 [% ~
$ z7 @: }- X% j# H, ?, C' U0 L K* f
eopegefhfmk64024880250.png
% B; L0 n% B$ v, v$ x1 B6 ]
运行效果
, ^ s [/ k4 j- W0 Z, b, |7 o. @4 ]8 E# z8 J
思路:把视频转换成帧数,然后批量读取图片,图片处理思路和之前推文一样,图片坐标系转换成笛卡尔坐标系,然后逐帧生成mp4。因为图片太大,图片转换成mat数据格式超过2g太大了,所以我选取了其中一部分帧数图片。
) Q( f- m8 k) f ~* C% |$ J \源码: v7 r ?7 l. }5 e: \8 _+ }
代码和数据文件:见推文末,或者评论区clc;clear;close all;%--------------------------------------------------------------------------% @Author: 好玩的Matlab% @公众号:好玩的Matlab% @Created: 09,03,2023% @Email:2377389590@qq.com% @Disclaimer: This code is provided as-is without any warranty.%--------------------------------------------------------------------------%% -------加载数据----------------disp('加载数据中.............')load('data.mat');load('sound.mat');disp('加载成功')
- e2 x, M4 T: vn=1; %这里修改鬼畜音乐 1-> 鸡你太美 2-> 练习两年半 3-> 你干嘛sound(audioData{n},Fs{n})%播放音乐, H/ Y# _9 p# |; R5 s& ^2 A8 {8 k
%% ------参数设置------------------x=6;y=6;%位置coef = 0.8 ;% 使用经验系数调整图像大小%% -------界面设置-----------------figure('Position',[476 122 857 744])hold on% 设置gca 属性ax=gca;ax.XLim=[0,11];ax.YLim=[0,11];ax.Box='off'; % 关闭轴边框ax.LineWidth = 1; % 设置轴线宽度为1ax.XMinorTick = 'on'; % 关闭X轴的次要刻度线ax.YMinorTick = 'on'; % 打开Y轴的次要刻度线ax.TickDir = 'in'; % 设置主要刻度线方向向外ax.GridLineStyle = '-.'; % 设置网格线样式为虚线ax.GridColor = 'k'; % 设置网格线颜色为黑色(注意注释中的"红色"是不准确的)ax.XGrid = 'on'; % 打开X轴的网格线ax.YGrid = 'on'; % 打开Y轴的网格线ax.FontSize = 14; % 设置字体大小为14ax.FontName = 'Times New Roman'; % 设置字体为Times New Romanax.XLabel.String = '公众号:好玩的Matlab'; % 设置X轴标签ax.YLabel.String = '公众号:好玩的Matlab'; % 设置Y轴标签ax.Title.String='公众号:好玩的Matlab';%% ------初始化视频对象-------------------------outputVideo = VideoWriter('ikun.mp4', 'MPEG-4');outputVideo.FrameRate = 24;open(outputVideo);idx=0;for i = 1:size(data,1) img = data{i,1}; AlphaImg = data{i,2}; % 获取当前坐标轴信息 ax = gca; xLen = ax.XLim(2) - ax.XLim(1); yLen = ax.YLim(2) - ax.YLim(1); spectRatio = ax.PlotBoxAspectRatio; % 根据坐标轴范围计算图像的宽度和高度 if xLen >= yLen w = xLen; h = yLen / spectRatio(2) * spectRatio(1); else w = xLen / spectRatio(1) * spectRatio(2); h = yLen; end % 使用循环绘制每个图像散点 xPic = [-w/2, w/2] * coef + x; yPic = [-h/2, h/2] * coef + y; % 绘制图像 Hdl(i)=image(xPic, yPic, img, "AlphaData", AlphaImg); drawnow; if i~=1 Hdl(idx).Visible='off'; end idx=idx+1; frame = getframe(gcf);% 获取当前帧 writeVideo(outputVideo, frame);% 写入视频帧 % pause(0.001)end% 关闭视频close(outputVideo);disp('视频保存成功');sound(audioData{n},Fs{n})%播放音乐implay('ikun.mp4');%播放视频- -THE END- -- n j7 p; Z6 t1 M
4 i( [; E2 n) T4 {源码下载:链接: https://pan.baidu.com/s/1mPHalA8QuVtXxEZTqmlJnw 密码: 1234 参考资料:& o% `. X4 f' {. W a
【1】ikun图片源自网络,配音源自抖音,侵权请联系删除,【2】https://idmatlab.blog.csdn.net/article/details/83277507 |
|