readFrame - Read next video frame - MATLAB (original) (raw)
Syntax
Description
[video](#buuzswi-1-video) = readFrame([v](#buuzswi-1-v))
reads the next available video frame from the file associated with v
.
[video](#buuzswi-1-video) = readFrame([v](#buuzswi-1-v),`'native'`)
returns data in the format specified by the VideoFormat
property.
Examples
Create a VideoReader
object for the sample video file xylophone_video.mp4
.
v = VideoReader("xylophone_video.mp4");
Read all the frames from the video, one frame at a time.
while hasFrame(v) frame = readFrame(v); end
Display information about the last frame returned by readFrame
.
Name Size Bytes Class Attributes
frame 240x320x3 230400 uint8
Clear the VideoReader
object.
Create a VideoReader
object for the sample video file xylophone_video.mp4
.
v = VideoReader("xylophone_video.mp4");
Specify to start reading frames at 2.5 seconds from the beginning of the video.
Create an axes
object to display the frame. Then continue to read and display video frames until no more frames are available to read.
currAxes = axes; while hasFrame(v) vidFrame = readFrame(v); image(vidFrame,"Parent",currAxes) currAxes.Visible = "off"; pause(1/v.FrameRate) end
Clear the VideoReader
object.
Create a VideoReader
object for the sample video file xylophone_video.mp4
. Then determine the width and height of the video.
xyloObj = VideoReader("xylophone_video.mp4"); vidWidth = xyloObj.Width; vidHeight = xyloObj.Height;
Create a video structure array.
mov = struct("cdata",zeros(vidHeight,vidWidth,3,"uint8"),colormap=[]);
Read one frame at a time until the end of the video.
k = 1; while hasFrame(xyloObj) mov(k).cdata = readFrame(xyloObj); k = k+1; end
Size a figure based on the width and height of the video, and then play the video one time.
vf = figure(Position=[0 0 xyloObj.Width xyloObj.Height]); imshow(mov(1).cdata,Border="tight") movie(vf,mov,1,xyloObj.FrameRate)
Clear the VideoReader
object.
Input Arguments
Input VideoReader
object. Use the VideoReader function to create a VideoReader
object from your video file.
Output Arguments
Video frame data, returned as an array. The dimensions and data type of video
depend on the VideoFormat
property of obj
.
The following table lists the data type and dimensions of video
for most files. H
is the image frame height andW
is the image frame width. When theVideoFormat
property of obj
is'Indexed'
, the data type and dimensions ofvideo
depend on whether you callreadFrame
with the 'native'
argument.
Value of obj.VideoFormat | Data Type of video | Dimensions of video | Description |
---|---|---|---|
'RGB24', with or without specifying 'native' | uint8 | H-by-W-by-3 | RGB24 image |
'Grayscale', without specifying 'native' | uint8 | H-by-W-by-1 | Grayscale image |
'Indexed', without specifying 'native' | uint8 | H-by-W-by-3 | RGB24 image |
'Grayscale' or 'Indexed', specifying 'native' | struct | 1-by-1 | MATLAB® movie, which is an array of frame structure arrays, each containing the fields cdata and colormap. |
For Motion JPEG 2000 files, the data type and dimensions of video
are as follows.
Value of obj.VideoFormat | Data Type of video | Dimensions of video | Description |
---|---|---|---|
'Mono8' | uint8 | H-by-W-by-1 | Mono image |
'Mono8 Signed' | int8 | H-by-W-by-1 | Mono signed image |
'Mono16' | uint16 | H-by-W-by-1 | Mono image |
'Mono16 Signed' | int16 | H-by-W-by-1 | Mono signed image |
'RGB24' | uint8 | H-by-W-by-3 | RGB24 image |
'RGB24 Signed' | int8 | H-by-W-by-3 | RGB24 signed image |
'RGB48' | uint16 | H-by-W-by-3 | RGB48 image |
'RGB48 Signed' | int16 | H-by-W-by-3 | RGB48 signed image |
Limitations
- For some AVI, MOV, or MP4 files on Windows®, using the
readFrame
function to read all of the frames in the file can result in a different number of frames from the value returned by theNumFrames
property of theVideoReader
object.
Version History
Introduced in R2014b