readFrame
다음 비디오 프레임 읽기
설명
예제
VideoReader
객체를 만들고 비디오 읽기
샘플 비디오 파일 xylophone_video.mp4
에 대한 VideoReader
객체를 만듭니다.
v = VideoReader("xylophone_video.mp4");
비디오에서 모든 프레임을 한 번에 한 프레임씩 읽습니다.
while hasFrame(v) frame = readFrame(v); end
readFrame
에서 반환되는 마지막 프레임에 대한 정보를 표시합니다.
whos frame
Name Size Bytes Class Attributes frame 240x320x3 230400 uint8
VideoReader
객체를 지웁니다.
clear v
특정 시간부터의 비디오 프레임 읽기
샘플 비디오 파일 xylophone_video.mp4
에 대한 VideoReader
객체를 만듭니다.
v = VideoReader("xylophone_video.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
VideoReader
객체를 지웁니다.
clear v
동영상 파일 읽기 및 재생하기
샘플 비디오 파일 xylophone_video.mp4
에 대한 VideoReader
객체를 만듭니다. 그런 다음 비디오의 너비와 높이를 확인합니다.
xyloObj = VideoReader("xylophone_video.mp4");
vidWidth = xyloObj.Width;
vidHeight = xyloObj.Height;
비디오 구조체형 배열을 만듭니다.
mov = struct("cdata",zeros(vidHeight,vidWidth,3,"uint8"),colormap=[]);
비디오의 끝까지 한 번에 한 프레임씩 읽어옵니다.
k = 1; while hasFrame(xyloObj) mov(k).cdata = readFrame(xyloObj); k = k+1; end
비디오의 너비와 높이에 기반하여 Figure 크기를 정한 다음 비디오를 한 번 재생합니다.
vf = figure(Position=[0 0 xyloObj.Width xyloObj.Height]);
imshow(mov(1).cdata,Border="tight")
movie(vf,mov,1,xyloObj.FrameRate)
VideoReader
객체를 지웁니다.
clear xyloObj
입력 인수
v
— 입력 VideoReader
객체
VideoReader
객체
입력 VideoReader
객체입니다. VideoReader
함수를 사용하여 비디오 파일에서 VideoReader
객체를 만듭니다.
출력 인수
video
— 비디오 프레임 데이터
배열
비디오 프레임 데이터로, 배열로 반환됩니다. video
의 차원과 데이터형은 obj
의 VideoFormat
속성에 따라 달라집니다.
다음 표에서 대부분의 파일에 대한 video
의 데이터형과 차원을 나열합니다. H
는 이미지 프레임 높이이고 W
는 이미지 프레임 너비입니다. obj
의 VideoFormat
속성이 'Indexed'
일 때 video
의 데이터형과 차원은 readFrame
을 'native'
인수와 함께 호출하는지에 따라 달라집니다.
obj.VideoFormat 의 값 | video 의 데이터형 | video 의 차원 | 설명 |
---|---|---|---|
'RGB24' ('native' 를 지정하거나 지정하지 않음) | uint8 |
| RGB24 이미지 |
'Grayscale' ('native' 를 지정하지 않음) | uint8 |
| 회색조 이미지 |
'Indexed' ('native' 를 지정하지 않음) | uint8 |
| RGB24 이미지 |
'Grayscale' 또는 'Indexed' ('native' 를 지정함) | struct | 1×1 | 각각 |
Motion JPEG 2000 파일의 경우, video
의 데이터형과 차원은 다음과 같습니다.
obj.VideoFormat 의 값 | video 의 데이터형 | video 의 차원 | 설명 |
---|---|---|---|
'Mono8' | uint8 |
| 단색 이미지 |
'Mono8 Signed' | int8 |
| 단색의 부호 있는 이미지 |
'Mono16' | uint16 |
| 단색 이미지 |
'Mono16 Signed' | int16 |
| 단색의 부호 있는 이미지 |
'RGB24' | uint8 |
| RGB24 이미지 |
'RGB24 Signed' | int8 |
| RGB24의 부호 있는 이미지 |
'RGB48' | uint16 |
| RGB48 이미지 |
'RGB48 Signed' | int16 |
| RGB48의 부호 있는 이미지 |
제한 사항
Windows®에서 일부 AVI, MOV 또는 MP4 파일의 경우,
readFrame
함수를 사용하여 파일의 모든 프레임을 읽어 들이면VideoReader
객체의NumFrames
속성에서 반환된 값과 다른 개수의 프레임이 생성될 수 있습니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
readFrame
에 대한 코드 생성 시 선택적 위치 인수native
는 지원되지 않습니다.행 우선 레이아웃을 사용하는 코드 생성 — Generate Code That Uses Row-Major Array Layout (MATLAB Coder).
배열 크기 제한 — 코드 생성 시 배열의 최대 요소 개수는 코드 생성기와 타깃 하드웨어에 의해 제한됩니다. 자세한 내용은 Array Size Restrictions for Code Generation (MATLAB Coder) 항목을 참조하십시오.
버전 내역
R2014b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)