MATLAB之VideoReader( )类

本文介绍MATLAB中VideoReader类的功能及使用方法,包括创建视频文件对象、读取视频帧、获取视频参数等操作。适用于需要处理视频数据的研究者和工程师。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MATLAB之VideoReader( )类:

1、VideoReader() - 该函数用于读取视频文件对象。

函数调用格式:

vid= VideoReader(filename); % 创建对象 vid,用于从名为 filename 的文件读取视频数据。
vid = VideoReader(filename,Name,Value); %使用名称-值对组设置属性 CurrentTime、Tag 和 UserData。例如,VideoReader('myfile.mp4','CurrentTime',1.2) 开始读取 1.2 秒的视频。您可以指定多个名称-值对组。将每个属性名称和后面的值用单引号括起来。

其中vid为结构体,包括如下成员:

Name - 视频文件名

Path - 视频文件路径

Duration - 视频的总时长(秒)

FrameRate - 视频帧速(帧/秒)

NumberOfFrames - 视频的总帧数

Height - 视频帧的高度

Width - 视频帧的宽度

BitsPerPixel - 视频帧每个像素的数据长度(比特)

VideoFormat - 视频的类型, 如 'RGB24'.

Tag - 视频对象的标识符,默认为空字符串''

Type - 视频对象的类名,默认为'VideoReader'.

UserData - 用户定义的数据,指定为任意数据类型的值。一般默认为“[ ]”

如,视频的总帧数为numFrames = vid.NumberOfFrames;

2 、该类其他对象函数:

(1)read - 读取视频帧,

注意:matlab提示:未来版本可能只支持 VideoReader.readFrame 

调用格式:

video = read(vid) %获取 vid相关联的文件读取所有视频帧。

video = read(vid,index) %只读取 index 指定的帧。

video = read(___,'native')  %以 VideoFormat 属性指定的格式返回数据,并且可以包含上述语法中的任何输入参数。

例:

video = read(vid, 1);         % first frame only 获取第一帧

video = read(vid, [1 10]);    % first 10 frames 获取前10帧

video = read(vid, Inf);       % last frame only 获取最后一帧

video = read(vid, [50 Inf]);  % frame 50 thru end 获取第50帧之后的帧

v=VideoReader('1.avi');

v.CurrentTime=1.5;

frame=readFrame(v); %即readFrame通过设置CurrentTime来读取指定的时间节点的图像,

也可以通过设置

v.CurrentTime=(1/v.FrameRate)*numframe; 

来读取指定帧数的视频,但由于FrameRate一般是小数,故除不尽,可能存在误差,因此以后读取视频帧数还是用read。

(2)get - 获取视频对象的参数

参数的名字为上述vid对象的所有成员。

调用格式:

Value = get(vid,Name)

Values = get(vid,{Name1,...,NameN})

allValues = get(vid)

get(vid)

例:

xyloObj = VideoReader('xylophone.mpg');

xyloSize = get(xyloObj, {'Height', 'Width', 'NumberOfFrames'})

(3)set - 设置视频对象的参数,与get对应

调用格式:

set(vid,Name,Value)

set(vid,cellOfNames,cellOfValues)

set(vid,structOfProperties)

settableProperties = set(vid)

例:

newValues.Tag = 'My Tag';

newValues.UserData = {'My User Data', pi, [1 2 3 4]};

xyloObj = VideoReader('xylophone.mpg');

set(xyloObj, newValues)

set(xyloObj, 'Tag', 'This is my tag.');

(4)hasFrame,确定帧是否可供读取​​​​​​​

调用格式:

tf = hasFrame(vid);
%如果存在可从文件中读取的视频帧,则 tf = hasFrame(v) 返回逻辑值 1 (true)。否则,将返回逻辑值 0 (false)。

(5)getFileFormats - 获取在该系统平台下,VideoReader可以支持读取的视频类型。

调用格式:

formats = VideoReader.getFileFormats()

(6)isPlatformSupported - 检测在当前系统平台下VideoReader是否可用

调用格式:

supported = VideoReader.isPlatformSupported()

 

参考文献:https://ww2.mathworks.cn/help/matlab/ref/videoreader.html

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值