Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

readFrame

다음 비디오 프레임 읽기

설명

예제

video = readFrame(v)v와 연결된 파일에서 다음으로 사용 가능한 비디오 파일을 읽어 들입니다.

video = readFrame(v,'native')는 데이터를 VideoFormat 속성에서 지정한 형식으로 반환합니다.

예제

모두 축소

예제 동영상 파일 xylophone.mp4에 대한 VideoReader 객체를 만듭니다.

v = VideoReader('xylophone.mp4');

비디오에서 모든 프레임을 한 번에 한 프레임씩 읽습니다.

while hasFrame(v)
    frame = readFrame(v);
end

readFrame에서 반환되는 마지막 프레임에 대한 정보를 표시합니다.

whos frame
  Name         Size                Bytes  Class    Attributes

  frame      240x320x3            230400  uint8              

video reader 객체를 만들고 특정 시간에 시작하는 비디오 프레임을 읽습니다.

예제 동영상 파일 xylophone.mp4를 읽기 위한 객체를 만듭니다.

v = VideoReader('xylophone.mp4');

비디오 시작부터 2.5초 후에 읽어오기가 시작되도록 지정합니다.

v.CurrentTime = 2.5;

프레임을 표시하기 위한 axes 객체를 만듭니다. 그런 다음, 읽을 수 있는 프레임이 더 없을 때까지 계속 비디오 프레임을 읽고 표시합니다.

currAxes = axes;
while hasFrame(v)
    vidFrame = readFrame(v);
    image(vidFrame, 'Parent', currAxes);
    currAxes.Visible = 'off';
    pause(1/v.FrameRate);
end

샘플 동영상 파일 xylophone.mp4를 읽고 재생합니다.

샘플 파일에서 데이터를 읽기 위해 VideoReader 객체를 만듭니다. 그런 다음, 비디오의 너비와 높이를 확인합니다.

xyloObj = VideoReader('xylophone.mp4');

vidWidth = xyloObj.Width;
vidHeight = xyloObj.Height;

동영상 구조체형 배열 mov를 만듭니다.

mov = struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),...
    'colormap',[]);

비디오 끝에 도달할 때까지 한 번에 한 프레임을 읽어옵니다.

k = 1;
while hasFrame(xyloObj)
    mov(k).cdata = readFrame(xyloObj);
    k = k+1;
end

비디오의 너비와 높이에 기반하여 Figure 크기를 정합니다. 그런 다음, 비디오의 프레임 속도로 동영상을 한 번 재생합니다.

hf = figure;
set(hf,'position',[150 150 vidWidth vidHeight]);

movie(hf,mov,1,xyloObj.FrameRate);

입력 인수

모두 축소

입력 VideoReader 객체입니다. VideoReader 함수를 사용하여 비디오 파일에서 VideoReader 객체를 만듭니다.

출력 인수

모두 축소

비디오 프레임 데이터로, 배열로 반환됩니다. video의 차원과 데이터형은 objVideoFormat 속성에 따라 달라집니다.

다음 표에서 대부분의 파일에 대한 video의 데이터형과 차원을 나열합니다. H는 이미지 프레임 높이이고 W는 이미지 프레임 너비입니다. objVideoFormat 속성이 'Indexed'일 때 video의 데이터형과 차원은 read'native' 인수와 함께 호출하는지에 따라 달라집니다.

obj.VideoFormat의 값video의 데이터형video의 차원설명
'RGB24'('native'를 지정하거나 지정하지 않음)uint8

H×W×3

RGB24 이미지

'Grayscale'('native'를 지정하지 않음)uint8

H×W×1

회색조 이미지

'Indexed'('native'를 지정하지 않음)uint8

H×W×3

RGB24 이미지

'Grayscale' 또는 'Indexed'('native'를 지정함)struct

1×1

각각 cdata 필드와 colormap 필드를 포함하는 프레임 구조체 배열로 구성된 배열인 MATLAB® 동영상.

Motion JPEG 2000 파일의 경우, video의 데이터형과 차원은 다음과 같습니다.

obj.VideoFormat의 값video의 데이터형video의 차원설명
'Mono8'uint8

H×W×1

단색 이미지

'Mono8 Signed'int8

H×W×1

단색의 부호 있는 이미지

'Mono16'uint16

H×W×1

단색 이미지

'Mono16 Signed'int16

H×W×1

단색의 부호 있는 이미지

'RGB24'uint8

H×W×3

RGB24 이미지

'RGB24 Signed'int8

H×W×3

RGB24의 부호 있는 이미지

'RGB48'uint16

H×W×3

RGB48 이미지

'RGB48 Signed'int16

H×W×3

RGB48의 부호 있는 이미지

VideoFormat 속성에 지정된 형식을 사용하기 위한 플래그로, 문자형 벡터 또는 string형 스칼라 'native'로 지정됩니다.

데이터형: char | string

제한 사항

  • Windows®의 일부 AVI, MOV 또는 MP4 파일의 경우, readFrame 함수를 사용하여 파일의 모든 프레임을 읽어 들이면 VideoReader 객체의 NumFrames 속성에서 반환된 값과 다른 개수의 프레임이 생성될 수 있습니다.

확장 기능

참고 항목

| | |

R2014b에 개발됨