Main Content

writeVideo

비디오 데이터를 파일에 쓰기

설명

writeVideo(v,img)는 배열의 데이터를 v와 연결된 비디오 파일에 씁니다.

writeVideo를 호출하기 전에 open(v)를 호출해야 합니다.

writeVideo(v,frame)은 일반적으로 getframe 함수에서 반환하는 하나 이상의 동영상 프레임을 씁니다.

예제

예제

모두 축소

RGB 이미지를 무손실 압축을 사용한 Motion JPEG 2000 파일에 씁니다.

견본 스틸 이미지 peppers.png의 데이터가 포함된 배열을 만듭니다.

A = imread("peppers.png");

새 비디오 파일을 위한 VideoWriter 객체를 만듭니다. "Archival" 프로파일을 사용하여 무손실 압축을 사용한 Motion JPEG 2000 파일을 지정합니다.

v = VideoWriter("myFile","Archival");

새 파일의 비디오 압축 유형을 확인합니다.

v.VideoCompressionMethod
ans = 
'Motion JPEG 2000'

쓰려는 VideoWriter 객체를 열고 A의 이미지 데이터를 파일에 씁니다.

open(v)
writeVideo(v,A)

VideoWriter 객체를 닫습니다.

close(v)

샘플 인덱스 이미지 파일 corn.tif에서 이미지와 컬러맵 데이터를 읽습니다.

[X,map] = imread("corn.tif");

새 인덱스 AVI 파일을 위한 VideoWriter 객체를 만듭니다.

v = VideoWriter("myIndexed.avi","Indexed AVI");

vColormap 속성에 컬러맵 데이터를 할당합니다.

v.Colormap = map;

쓰려는 VideoWriter 객체를 엽니다. v를 연 후에는 속성을 변경할 수 없습니다.

open(v)

X의 이미지 데이터를 비디오 파일에 씁니다.

writeVideo(v,X)

VideoWriter 객체를 닫습니다.

close(v)

샘플 비디오를 읽고 쓰는 객체를 만들고, 쓰려는 AVI 파일을 엽니다.

reader = VideoReader("xylophone_video.mp4");
writer = VideoWriter("transcoded_xylophone.avi","Uncompressed AVI");

writer.FrameRate = reader.FrameRate;
open(writer);

각 프레임을 읽고 씁니다.

while hasFrame(reader)
    img = readFrame(reader);
    writeVideo(writer,img)
end

VideoReader 객체를 지우고 VideoWriter 객체를 닫습니다.

clear reader
close(writer)

좌표축과 Figure 속성을 설정하여 비디오에 대한 프레임을 생성합니다.

Z = peaks;
surf(Z);
axis tight manual

Figure contains an axes object. The axes object contains an object of type surface.

set(gca,"NextPlot","replacechildren")

출력 비디오 파일에 대한 VideoWriter 객체를 만들고, 쓰려는 객체를 엽니다.

v = VideoWriter("peaks.avi");
open(v)

일련의 프레임을 생성하고, Figure에서 각 프레임을 가져온 다음, 각 프레임을 파일에 씁니다.

for k = 1:20
   surf(sin(2*pi*k/20)*Z,Z)
   frame = getframe(gcf);
   writeVideo(v,frame)
end

Figure contains an axes object. The axes object contains an object of type surface.

VideoWriter 객체를 닫습니다.

close(v)

입력 인수

모두 축소

입력 VideoWriter 객체입니다. VideoWriter를 사용하여 객체를 만듭니다.

회색조 또는 RGB 색 이미지를 나타내는 값으로, 2차원 배열, 3차원 배열 또는 4차원 배열로 지정됩니다.

  • 단일 회색조, 단색 또는 인덱스 이미지의 경우, img는 2차원(높이×너비)이어야 합니다.

  • 단일 트루컬러(RGB) 이미지의 경우, img는 3차원(높이×너비×3)입니다.

  • 회색조 이미지 시퀀스의 경우, img는 4차원(높이×너비×1×프레임)입니다. 파일 내 모든 프레임의 높이와 너비는 일관되어야 합니다.

  • RGB 이미지 시퀀스의 경우, img는 4차원(높이×너비×3×프레임)입니다. 파일 내 모든 프레임의 높이와 너비는 일관되어야 합니다.

AVI 또는 MPEG-4 파일을 만들 경우:

  • img는 하나 이상의 회색조나 RGB 색 이미지를 나타내는 single형, double형 또는 uint8 값들로 구성된 배열이며, writeVideo는 이를 하나 이상의 RGB 비디오 프레임으로 씁니다.

  • single형 또는 double형의 데이터는 인덱스 AVI 파일을 쓸 경우를 제외하고는 [0,1] 범위에 있어야 합니다.

Motion JPEG 2000 파일을 만들 경우:

  • img는 하나 이상의 단색이나 RGB 색 이미지에 나타내는 uint8, int8, uint16 또는 int16 값들로 구성된 배열입니다.

데이터형: single | double | int8 | int16 | uint8 | uint16

프레임 데이터로, 단일 프레임을 나타내는 1×1 구조체 배열이나 다중 프레임을 나타내는 구조체의 1×F 배열로 지정됩니다. 각 프레임에는 cdata 필드와 colormap 필드가 포함됩니다. 일반적으로 frame 배열은 getframe 함수에서 반환됩니다.

colormap이 비어 있지 않은 경우, cdata의 각 요소는 2D(높이×너비) 배열이어야 합니다. 파일 내 모든 프레임의 높이와 너비는 일관되어야 합니다.

colormap에는 최대 256개 항목이 포함될 수 있습니다. colormap의 각 요소는 [0,1] 범위에 있어야 합니다.

VideoWriter 객체를 만들 때 profile 입력값과 cdata 크기에 따라 writeVideoframe을 사용하는 방식이 결정됩니다.

VideoWriter 객체의 profilecdata의 각 요소의 크기 writeVideo의 동작

'Indexed AVI'

2차원(높이×너비)프레임을 제공된 대로 사용합니다.
'Grayscale AVI'2차원(높이×너비)프레임을 제공된 대로 사용합니다. colormap이 비워져 있어야 합니다.

기타 모든 프로파일

2차원(높이×너비)colormap 필드를 사용하여 RGB 이미지 프레임을 생성합니다.
3차원(높이×너비×3)colormap 필드를 무시합니다. cdata 필드를 사용하여 RGB 이미지 프레임을 생성합니다.

데이터형: struct

버전 내역

R2010b에 개발됨