如何用MATLAB.avi格式的视频读成一帧一帧的
1个回答
展开全部
将视频转换为帧图片
mov=aviread('D:\road2.avi'); %读入
fnum=size(mov,2); %读取视频的祯数,mov为1*fnum矩阵
for i=1:fnum
strtemp=strcat('D:\cc\',int2str(i),'.','bmp');%将每祯转成bmp格式的图片
imwrite(mov(i).cdata(:,:,:),strtemp);
end
我的视频是D盘中的road2,存入的文件是D盘CC文件夹,你按你的路径输入。
对AVI 的格式有要求,转成非压缩的24位RGB就可以了
虽同AVI文件,但压缩率是不同的,而MATLAB认不出压缩的AVI,所以读不进去会出错,只有将AVI还原为未压缩的情况下,MATLAB才能顺利读入。
可以试一下aviinfo查看一下avi视频文件的压缩格式,一般是无压缩的可以正常读取。
>> aviinfo traffic.avi
ans =
Filename: 'D:\Program Files\MATLAB\R2009a\toolbox\images\imdemos\traffic.avi'
FileSize: 208896
FileModDate: '20-八月-2007 12:34:40'
NumFrames: 120
FramesPerSecond: 15
Width: 160
Height: 120
ImageType: 'truecolor'
VideoCompression: 'MP42'
Quality: 0
NumColormapEntries: 0
>>
clc; clear all; close all;
mov=aviread('rhinos.avi'); %读入
fnum=size(mov,2); %读取视频的祯数,mov为1*fnum矩阵
figure(1);
for i=1:fnum
strtemp=strcat(int2str(i),'.','bmp');%将每祯转成bmp格式的图片
imwrite(mov(i).cdata(:,:,:),strtemp);
figure(1); imshow(mov(i).cdata(:,:,:), []); pause(0.1);
mov=aviread('D:\road2.avi'); %读入
fnum=size(mov,2); %读取视频的祯数,mov为1*fnum矩阵
for i=1:fnum
strtemp=strcat('D:\cc\',int2str(i),'.','bmp');%将每祯转成bmp格式的图片
imwrite(mov(i).cdata(:,:,:),strtemp);
end
我的视频是D盘中的road2,存入的文件是D盘CC文件夹,你按你的路径输入。
对AVI 的格式有要求,转成非压缩的24位RGB就可以了
虽同AVI文件,但压缩率是不同的,而MATLAB认不出压缩的AVI,所以读不进去会出错,只有将AVI还原为未压缩的情况下,MATLAB才能顺利读入。
可以试一下aviinfo查看一下avi视频文件的压缩格式,一般是无压缩的可以正常读取。
>> aviinfo traffic.avi
ans =
Filename: 'D:\Program Files\MATLAB\R2009a\toolbox\images\imdemos\traffic.avi'
FileSize: 208896
FileModDate: '20-八月-2007 12:34:40'
NumFrames: 120
FramesPerSecond: 15
Width: 160
Height: 120
ImageType: 'truecolor'
VideoCompression: 'MP42'
Quality: 0
NumColormapEntries: 0
>>
clc; clear all; close all;
mov=aviread('rhinos.avi'); %读入
fnum=size(mov,2); %读取视频的祯数,mov为1*fnum矩阵
figure(1);
for i=1:fnum
strtemp=strcat(int2str(i),'.','bmp');%将每祯转成bmp格式的图片
imwrite(mov(i).cdata(:,:,:),strtemp);
figure(1); imshow(mov(i).cdata(:,:,:), []); pause(0.1);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询