最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

matlab把视频变成图像

来源:动视网 责编:小OO 时间:2025-09-23 23:51:57
文档

matlab把视频变成图像

[filename,pathname,fileindex]=uigetfile('*.avi','请选择一个Avi文件');video_info=aviinfo([pathnamefilename]);%info=%          Filename:  视频名称%          FileSize:  视频大小%        FileModDate:  视频创建日期%          NumFrames:  视频总帧数%      FramesPerSecond:  视频采集速率% 
推荐度:
导读[filename,pathname,fileindex]=uigetfile('*.avi','请选择一个Avi文件');video_info=aviinfo([pathnamefilename]);%info=%          Filename:  视频名称%          FileSize:  视频大小%        FileModDate:  视频创建日期%          NumFrames:  视频总帧数%      FramesPerSecond:  视频采集速率% 
[filename,pathname,fileindex]=uigetfile('*.avi','请选择一个Avi文件');

video_info=aviinfo([pathname filename]);

% info = 

%               Filename:  视频名称

%               FileSize:  视频大小

%            FileModDate:  视频创建日期

%              NumFrames:  视频总帧数

%        FramesPerSecond:  视频采集速率

%                  Width:  视频宽度

%                 Height:  视频高度

%              ImageType: 'truecolor'  图像模式

%       VideoCompression: 'DIV3'  视频图像压缩格式

%                Quality: 0

%     NumColormapEntries: 0

LEN=video_info.NumFrames; %获得视频长度

for k=1:LEN

    video_videotape(k)=aviread(video_info.Filename,k);

    video_image=video_videotape(k).cdata;

    if k<10

把每帧图像存入硬盘

    elseif k>=10 & k<100

把每帧图像存入硬盘

    elseif k>=100 & k<1000

把每帧图像存入硬盘

    elseif k>=1000 & k<1000

把每帧图像存入硬盘  

    else 

把每帧图像存入硬盘

        

    end

        

end 

备注:通过更改imwrite那儿的很多参数,可以获得自己想要的很多结果,比如更改bmp为jpg,以及其它,具体请在MATLAB下help imwrite。

最近也碰到了这样得问题,试试这个:

clc

clear all

mov=mmreader('XX.avi');     %用mmreader读入视频文件

for i=1:mov.numberofframes   %获得总帧数,并依次读取

b=read(mov,i)

把第i帧的图片写为

end

如果还无法读取,需要使用aviinfo,查看解码类型,再网上下载相应的解码器,然后安装。

谢谢!

在论坛里学习了很多天,终于总结出一个方法,如下:(在matlab R2008a环境下)

mov=mmreader('era.avi');     %用mmreader读入视频文件

for i=1:mov.numberofframes   %获得总帧数,并依次读取

b=read(mov,i)

把第i帧的图片写为

end

这样,就可以对视频进行逐帧处理了。比如,

读出第三帧的图片

imshow(a)

function frame2bmp(video,s,e,t,pickind)

y=e-s+1;

for n=1:t:y

    a=video.frames(n).cdata;

    strtemp=strcat('g:\转换的图片\\',int2str(n),'.',pickind);

    imwrite(a,strtemp);

end

这是一个用matlab将视频的每一帧转化为bmp格式的图像保存起来的程序~~不是我写的,所以看不懂。尤其是那个pickind参数,究竟代表什么? 

提问者: st1121 - 五级

最佳答案

哈哈,这个程序我用过。

根据lz的程序理解,

video是你电影读取到matlab中的程序,应该在主程序中有video=aviread('你电影的路径');这么一段吧?

s是你想截取图像的第一帧,e是你想截取图像的最后一帧,t是每隔多少帧你想截取一个图像,y是总共要截取的图像数目。a是图像的信息,你可以打开a看看,都是数字。pickind是截取的图像的后缀,如果你想要jpg,那就是pickind='jpg'; strtemp是图像保存的路径和文件名。imwrite是将刚才读出的图像信息保存到你所在的图像路径中去。

如果有不懂站内信哈。

但是lz的程序比较费内存,因为video需要将电影文件一下子全部读到matlab里面去,会很慢。

另外我给这个程序改了一下,avi_file是电影文件的路径,pic_file是存放图片的路径和文件名。

function avi2pic5(avi_file,pic_file)

movinfo=aviinfo(avi_file);

frame_num=movinfo.NumFrames;

frame_rate=movinfo.FramesPerSecond;

pic_kind='bmp';

i=1;

for n=1:frame_rate:frame_num

    mov=mmread(avi_file,n);

    pic_name=sprintf('%.4d',i);

    strtemp=strcat(pic_file,'_',pic_name,'.',pic_kind);

    imwrite(mov.frames.cdata(:,:,:),strtemp);

    i=i+1;

end 

文档

matlab把视频变成图像

[filename,pathname,fileindex]=uigetfile('*.avi','请选择一个Avi文件');video_info=aviinfo([pathnamefilename]);%info=%          Filename:  视频名称%          FileSize:  视频大小%        FileModDate:  视频创建日期%          NumFrames:  视频总帧数%      FramesPerSecond:  视频采集速率% 
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top