源程序如下
clc
clear
close all
% 创建视频读取对象,并设置参数
xyloObj = VideoReader('E:\video.avi'); % 3547帧
nFrames = xyloObj.NumberOfFrames;
vidHeight = xyloObj.Height;
vidWidth = xyloObj.Width;
FrameRate = xyloObj.FrameRate; % 24帧播放的
% 创建几帧数据的空间
frames = 101:110;
mov(1:length(frames)) = struct('cdata', zeros(vidHeight, vidWidth, 3, 'uint8'), 'colormap', []);
% 读数据
for k = 1 : length(frames)
mov(k).cdata = read(xyloObj, frames(k));
end
% 基于video的分辨率创建figure
hf = figure;
set(hf, 'position', [150 150 vidWidth vidHeight])
% 播放视频
movie(hf, mov, 1, 10); % 在hf中以xyloObj.FrameRate帧率播放mov,播放1次
% 保存数据
save Frame101-110 mov vidHeight vidWidth
for k=1:x4;
for i=1:x1;
for j=1:x2;
xframes(i,j,1,k)=frames(i,j,1,k);
xframes(i,j,2,k)=frames(i,j,2,k);
xframes(i,j,3,k)=frames(i,j,3,k);
xframes(i,j,4,k)=(frames(i,j,1,k)+ frames(i,j,2,k)+ frames(i,j,3,k))./3;
end
end
end
for i=1:x1;
for j=1:x2;
for m=1:x4-1;
for n=(m+1):x4;
if xframes(i,j,4,n)
temp(i,j,1,m)=xframes(i,j,1,n);
temp(i,j,2,m)=xframes(i,j,2,n);
temp(i,j,3,m)=xframes(i,j,3,n);
temp(i,j,4,m)=xframes(i,j,4,n);
xframes(i,j,1,n)=xframes(i,j,1,m);
xframes(i,j,2,n)=xframes(i,j,2,m);
xframes(i,j,3,n)=xframes(i,j,3,m);
xframes(i,j,4,n)=xframes(i,j,4,m);
xframes(i,j,1,m)= temp(i,j,1,m);
xframes(i,j,2,m)= temp(i,j,2,m);
xframes(i,j,3,m)= temp(i,j,3,m);
xframes(i,j,4,m)= temp(i,j,4,m);
end
end
end
end
end
for i=1:3;
yframes(:,:,i)=xframes(:,:,i,floor(x4/2));
end
figure;imshow(yframes);
imwrite(yframes, 'background.tif');
运行之后出现下面问题
Error using VideoReader/init (line 429)
The file requires the following codec(s) to be installed on your system:
Y800
Error in VideoReader (line 132)
obj.init(fileName);
Error in hsibackground (line 6)
xyloObj = VideoReader('E:\video.avi'); % 3547帧
3万+

被折叠的 条评论
为什么被折叠?



