ssdqsse 发表于 2007-7-20 15:12

关于抓取视频图像的程序讨论

我用下面的程序来抓取视频的图像,但是一运行就死机,请大家看一下,提点意见:
function avi2pic()
mov=aviread('F:\bao.avi');
temp=size(mov);
fnum=temp(2);
for i=1:fnum,
strtemp=strcat(int2str(i),'.','jpg');
imwrite(mov(i).cdata(:,:,:),mov(i).colormap,strtemp);
end
下面是运行后的报警:
mov=aviread('F:\bao.avi');
Warning: File: E:\MATLAB6p5\toolbox\matlab\iofun\aviinfo.m Line: 311 Column: 1
Variable 'length' has been previously used as a function name.
(Type "warning off MATLAB:mir_warning_variable_used_as_function" to suppress this warning.)
> In E:\MATLAB6p5\toolbox\matlab\iofun\aviread.m at line 46

eight 发表于 2007-7-20 15:29

原帖由 ssdqsse 于 2007-7-20 15:12 发表 http://www.chinavib.com/forum/images/common/back.gif
我用下面的程序来抓取视频的图像,但是一运行就死机,请大家看一下,提点意见:
function avi2pic()
mov=aviread('F:\bao.avi');
temp=size(mov);
fnum=temp(2);
for i=1:fnum,
strtemp=strcat(int2str(i ...

估计在 bao.avi 中,出现了一个变量名为 length。其实这个只是警告,你大可以不用理会

[ 本帖最后由 eight 于 2007-7-20 16:10 编辑 ]

ssdqsse 发表于 2007-7-20 16:06

请说得明白些,因为我是初学者...麻烦你了

花如月 发表于 2007-7-20 16:19

呵呵,我帮你试试了。
clear;
mov=aviread('176.avi',1:10:140);%在这里定义抓拍的起始帧和帧间隔,否则会因为在读入的时候特别慢或者出现内存溢出的错误
temp=size(mov);
fnum=temp(2);
for i=1:fnum;
strtemp=strcat(int2str(i),'.','jpg');
imwrite(mov(i).cdata(:,:,:),strtemp);
end
注意imwrite的用法,在matlab里avi的图像会有2中不同的结构(详见aviread的帮助文档),写文件的时候会有所不同。
附图是我抓拍的效果

[ 本帖最后由 花如月 于 2007-7-20 16:24 编辑 ]

appleseed05 发表于 2007-7-21 08:52

这个功能很不错啊,受教了
页: [1]
查看完整版本: 关于抓取视频图像的程序讨论