怎么用matlab将一系列图片转换成MPEG4格式的视频

怎么用matlab将一系列图片转换成MPEG4格式的视频,第1张

1)matlab好像不支持修改制作视频,只能读取avi视频

2)如果修改视频格式,格式工厂可以转换视频之间

或者图片之间的格式。

3)将图片组成视频可以考虑用会声会影编辑或者picasa也可以。

1、用matlab读取avi 视频(只能读一定压缩各式的avi 电影,这是因为avi视频文件的编码

有很多,而matlab只支持部分编码格式。可见

http://blog.csdn.net/IdoIwill/article/details/2125838) aviinfo('d:\abc.avi')

%显示存在d 盘文件abc.avi 的信息,在matlab2010 版本中,该函数可以换成mmreader mov=aviread('abc:.avi') %读入电影abc.avi movie(mov)%放映电影

2、将avi视频转成图片序列

mov=aviread('d:\abc.avi')%读入

Vframes=size(mov,2) %读取视频的帧数,mov 为1*1179 struct,struct就是第4点所介绍的 for i=1: Vframes

strtemp=strcat('d:\转换的图片\',int2str(i),'.','jpg')%将每帧转成.jpg 的图片 imwrite(mov(i).cdata(:,:,), mov(i).colormap, strtemp) % 把图像写入磁盘 end

3、读取avi视频第index帧有三种使用方式(不适用于索引图):

第一种:mov=aviread(filename) % 读入视频

frame=mov(index) %读取avi 文件的第index 帧图像; img = frame.cdata % 读取图像的颜色信息

第二种:frame = aviread(filename, index) img = frame.cdata

第三种:mov = aviread(filename)frame = mov.cdataimg = mov{index}例:%读取第一帧图像

mov = aviread('highwayI_raw.AVI')frame=mov(index)imshow(frame.cdata)

4、读取avi视频第index帧图像后,所储存帧格式是一个结构体(struct),该结构体有两个元素:cdata 和colormap

例:

frame = aviread('highwayI_raw.AVI', i)

frame.cdata 表示了一个数据数组,彩色图像就是3 维的,灰度图像就是2 维的。也就是相当于I=imread(‘abc.jpg’)后的数组I

frame.colormap 见(help aviread)

%%%%%了解了以上四点,处理视频文件就可以相当于图像文件一样处理了%%%%

5、将彩色图像转换为灰度图像,很简单:

frame = aviread('highwayI_raw.AVI', i)

f_gray = rgb2gray(frame.cdata)这样就可以将文件的第i帧转换为灰度图像。

6、 创建avi视频文件

aviobj = avifile(filename)

aviobj = avifile(filename, 'Param1', Val1, 'Param2', Val2,...) 描述:

aviobj = avifile(filename) 创建一个AVI文件,其名称为filename,AVI文件对象的所有属性均取默认值。如果文件名中并不包含扩展名,则avifile为filename自动添加扩展名.avi。AVI是一种存储声音和图像数据的文件格式。

avifile返回一个指向AVI文件对象aviobj的句柄,使用该对象在其他函数中可以引用该对象。AVI文件对象支持控制被创建的AVI文件的各方面属性和方法。

aviobj = avifile(filename, 'Param1', Val1, 'Param2', Val2,...)使用指定的参数设置创建一个AVI文件。 参数说明表:

用户也可以使用结构语法来设置AVI对象的属性。Avifile对象的所有属性名字和参数表中的名字一样,并且要完整(除了keyframe这个参数)。例如,设定质量属性为100可以使用如下的语法

格式:

aviobj = avifile('myavifile')aviobj.quality = 100

实例

这一实例显示如何使用函数avifile创建AVI文件example.avi。 t = linspace(0,2.5*pi,40)fact = 10*sin(t)fig=figure

aviobj = avifile('example.avi') [x,y,z] = peaksfor k=1:length(fact) h = surf(x,y,fact(k)*z)axis([-3 3 -3 3 -80 80]) axis off

caxis([-90 90]) F = getframe(fig)

aviobj = addframe(aviobj,F)end

close(fig)

aviobj = close(aviobj)

7、mmreader 类---创建一个视频文件读取对象

其实在 matlab2010 中,会建议采用mmreader、mmfileinfo等函数,如果使用aviread会出现警告如下:

Warning: AVIREAD will be removed in a future release. Use MMREADER instead. 这是由于aviread接口需要要求avi文件时没有压缩的,这回导致其应用受到很大的 具体的mmreader 类描述可见matlab的help,以下摘自一些重点: mmreader类 是为了创建一个读取视频文件的多媒体读取对象 描述:

函数 mmreader可以读取所有的多媒体文件,返回值为一个结构体;然后可以用read 函数进行读取文件

mmreader 支持的文件格式由各个 *** 作系统平台决定

Window: AVI(.avi)/MPEG-1(.mgp)Window Media Video(.wmv,.asf,.asx)

Macintosh: AVI(.avi)/MPEG-1(.mpg)/MPEG(.mp4,.m4v)/苹果Quick Time movie(.mov) 以及被QuickTime在苹果系统上所支持的视频格式

Linux: 支持系统中所安装的GStreamer 0.10 支持的视频格式,包括AVI/Ogg Theora(.ogg)

mmreader创建视频文件有两种 obj = mmreader(filename)

obj = mmreader(filename, ‘PropertyName’, ‘PropertyValue’)

第一种只需提供(默认路径名)+文件名,就可以返回一个视频对象;使用第二种方法,可以设置属性名以及属性值

obj具有的属性如下: BitsPerPixel (只读) 视频的每个像素的位数 Duration (只读) 每秒的总长度 FrameRate (只读) 每秒的帧率 Height (只读) 视频每帧图像的高度 Name(只读) 对象所对应的视频文件名 NumberOfFrames (只读) 视频流中的总帧数 Path(只读)视频文件所在的路径名 Tag 定义视频对象的标签(默认’’) Type(只读) 对象的类名—mmreader UserData 给用户自定义数据的区域 VideoFormat (只读) 视频文件压缩格式 Width (只读)视频每帧图像的宽度 通常obj对象配合read方法使用;read的使用方法如下: video = read(obj)

video = read(obj,index)或 video = read(obj, [index1,index2])

其实第一种默认是read(obj, [1,inf]) 第一种方法读入obj视频对象的所有帧第二种方法读入obj视频对象的第index帧.

第一种方法返回的video对象是个4维数组,H-W-B-F H: 图像帧的高度 W: 图像帧的宽度 B: 图像帧的颜色通道 F: 图像帧的数目

第二种方法返回就是图像帧的数据,灰度图像返回二维数组,RGB24图像返回三维数组。 读取第一帧图像例子如下

obj = mmreader('abc.avi')video = read(obj)img = video(:,:,:1)imshow(img)

Windows下最方便的是用mmreader函数,然后用read函数读取

mov = mmreader(filename)

frames=read(mov, [1, 100]) % Reads from frame 1 to frame 100

具体请查看两个函数的帮助

支持的格式:

AVI (.avi),

MPEG-1 (.mpg),

Windows Media? Video (.wmv, .asf, .asx),

and any format supported by Microsoft? DirectShow.

MPEG2可以先转换格式再用


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11791191.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存