这里写目录标题
-
- [1. 两张图片来回切换](#1. 两张图片来回切换)
1. 两张图片来回切换
matlab
clc;clear;
dbstop if error
%% 生成两张图片来回切换的视频
% 图片参数设定
V=2160;%↓
H=3840;%→
%第1张图片
IMG1=zeros(V,H,3, 'uint8'); %如果不写'uint8',图片灰度范围[0,1]
box_v_precent=0.50;%v窗口大小
box_h_precent=0.50;%h窗口大小
box_v_st=fix(V/2)-fix(V*box_v_precent*0.5);
box_v_end=fix(V/2)+fix(V*box_v_precent*0.5)-1;
box_v=box_v_end-box_v_st+1;
box_h_st=fix(H/2)-fix(H*box_h_precent*0.5);
box_h_end=fix(H/2)+fix(H*box_h_precent*0.5)-1;
box_h=box_h_end-box_h_st+1;
for i=box_v_st:box_v_end
for j=box_h_st:box_h_end
IMG1(i,j,1)=255;
IMG1(i,j,2)=255; %生成窗口图片
IMG1(i,j,3)=255;
end
end
%第2张图片
IMG2=zeros(V,H,3, 'uint8'); %如果不写'uint8',图片灰度范围[0,1]
IMG2=IMG2+255;
%视频参数设定
Path='.\';% 输出视频路径
Freq=60;
time_Sec=10;
Frame_total=Freq*time_Sec;
myVideo = VideoWriter('TwoImgSwitchByFrame','MPEG-4');
myVideo.FrameRate=60;
%myVideo.Quality=100;
open(myVideo);
for k=1:Frame_total3
odd=mod(k,2);
if odd==1
writeVideo(myVideo, IMG1);
else
writeVideo(myVideo, IMG2);
end
end
% for k=1:Frame_total/2
%
% writeVideo(myVideo, IMG1);%只要依次写入视频就可,不一定在一个for循环
%
% end
% for k=1:Frame_total/2
% writeVideo(myVideo, IMG2);
% end
close(myVideo);
disp('Wirte_Finish');
生成视频测试code
matlab
clear ;close all;clc;
dbstop if error
% 把视频里每一帧存为单独的图片
fileName = 'TwoImgSwitchByFrame.mp4';
obj = VideoReader(fileName);
numFrames = obj.NumberOfFrames;% 帧的总数
for k = 1 : numFrames% 读取数据
frame = read(obj,k);
%imshow(frame);%显示帧
imwrite(frame,strcat('.\frame\',num2str(k),'.bmp'),'bmp');% 保存帧
end
disp('Wirte_Finish');