matlab读取/播放视频的函数(2)
来源:互联网 发布:水冷 风冷 知乎 编辑:程序博客网 时间:2024/06/05 15:20
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.cdata; img = 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] = peaks; for 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 (只读) 视频的每个像素的位数
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);
0 0
- matlab读取/播放视频的函数(2)
- matlab读取/播放视频的函数
- matlab读取/播放视频的函数
- matlab读取/播放视频的函数
- matlab读取/播放视频的函数(1)
- matlab读取/播放视频的函数以及写入/合成视频函数
- matlab中读取、播放视频的方法
- 使用matlab中的VideoReader函数读取,保存,显示,播放视频
- Matlab读取avi视频并播放
- Matlab读取avi视频并播放
- matlab使用avifile制作视频、VideoReader读取视频和movie函数将图片以视频方式播放
- 视频的读取、播放、保存
- Matlab读取avi视频并播放 你必须要知道的
- matlab 视频播放初学
- Android视频播放数据读取的流程
- matlab中视频的读取与显示
- 也谈matlab中读取视频的一个重要函数mmreader
- MATLAB 读取视频帧
- Android 自定义View流程
- xpath学习(一)
- 使用Putty连接Ubuntu虚拟机
- Android Service使用方法--简单音乐播放实例
- 【离散数学】实验二 集合上二元关系性质判定的实现
- matlab读取/播放视频的函数(2)
- hdu 5311 Hidden String dfs
- 树懒_移动开学笔记_day29&day30_代码管理与实战
- 9.4 Noip模拟
- Codeforces Gym 100325A String Decomposition 字符串DP
- 第七章定制并发类
- 显示桌面
- C语言中sprintf()函数的用法
- TCP的三次握手(建立连接)和四次挥手(关闭连接)