이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

getframe

좌표축 또는 Figure를 동영상 프레임으로 캡처

설명

예제

F = getframe은 현재 좌표축을 화면에 표시되는 대로 동영상 프레임으로 캡처합니다. F는 이미지 데이터를 포함하는 구조체입니다. getframe은 좌표축을 화면에 표시되는 것과 동일한 크기로 캡처합니다. 좌표축 윤곽선 밖에 있는 눈금 레이블이나 다른 내용은 캡처하지 않습니다.

예제

F = getframe(ax)는 현재 좌표축 대신 ax로 식별된 좌표축을 캡처합니다.

예제

F = getframe(fig)fig로 식별된 Figure를 캡처합니다. 좌표축 제목, 레이블, 눈금을 포함하여 Figure 창의 내부 전체를 캡처하려면 Figure를 지정하십시오. Figure 창의 메뉴와 도구 모음은 동영상 프레임에 캡처되지 않습니다.

F = getframe(___,rect)rect로 정의된 사각형 내의 영역을 캡처합니다. rect[left bottom width height] 형식의, 요소를 4개 가진 벡터로 지정합니다. 이 옵션은 위에 열거된 구문의 ax 또는 fig 입력 인수와 함께 사용할 수 있습니다.

예제

모두 축소

랜덤 데이터의 플롯을 만듭니다. 좌표축을 캡처하고 이미지 데이터를 반환합니다. getframe은 좌표축과 좌표축 윤곽선의 내부를 캡처합니다. 좌표축 윤곽선을 벗어나는 내용은 캡처되지 않습니다.

plot(rand(5))
F = getframe;

F는 구조체로, 필드 cdata에 캡처된 이미지 데이터를 저장합니다.

imshow를 사용하여, 캡처된 이미지 데이터를 표시합니다.

figure
imshow(F.cdata)

곡면 플롯을 만듭니다. 메뉴와 도구 모음을 제외한 Figure 창의 내부를 캡처합니다.

surf(peaks)
F = getframe(gcf);

F는 구조체로, 필드 cdata에 캡처된 이미지 데이터를 저장합니다.

imshow를 사용하여, 캡처된 이미지 데이터를 표시합니다.

figure
imshow(F.cdata)

좌표축의 내부와, 각 방향에서 30픽셀 두께의 여백을 캡처합니다. 추가된 여백은 캡처 프레임에 눈금 레이블을 포함시키기 위해 필요합니다. 눈금 레이블 크기에 따라 여백을 조정해야 할 수도 있습니다.

랜덤 데이터의 플롯을 만듭니다.

plot(rand(5))

좌표축 단위를 픽셀로 변경하고 현재 좌표축 위치를 반환합니다. 위치 벡터의 세 번째 요소와 네 번째 요소는 좌표축 너비와 높이를 픽셀 단위로 지정합니다.

drawnow
ax = gca;
ax.Units = 'pixels';
pos = ax.Position
pos =

   73.8000   47.2000  434.0000  342.3000

좌표축과 원하는 여백을 모두 감싸는 사각형 영역을 정의하는, 요소를 4개 가진 벡터 rect를 만듭니다. rect의 처음 두 개 요소는 좌표축의 왼쪽 아래 코너에 대해 상대적인, 사각형의 왼쪽 아래 코너를 지정합니다. rect의 마지막 두 개 요소는 사각형의 너비와 높이를 지정합니다. 좌표축 단위를 디폴트 값인 'normalized'로 재설정합니다.

marg = 30;
rect = [-marg, -marg, pos(3)+2*marg, pos(4)+2*marg];
F = getframe(gca,rect);
ax.Units = 'normalized';

imshow를 사용하여, 캡처된 이미지 데이터를 표시합니다.

figure
imshow(F.cdata)

캡처된 이미지 데이터에 제목, 축 레이블, 눈금 레이블이 포함되도록 좌표축 둘레의 여백을 계산합니다.

제목과 x축 레이블이 있는 플롯을 만듭니다.

plot(rand(5))
xlabel('x values')
title('Plot of Random Data')

좌표축 단위를 픽셀로 변경하고 좌표축의 Position 속성값과 TightInset 속성값을 저장합니다. TighInset 속성은 [left bottom right top] 형식의, 요소를 4개 가진 벡터입니다. 이 값들은 눈금 값과 텍스트 레이블을 표시하기 위해 좌표축 둘레에 사용된 여백입니다.

drawnow
ax = gca;
ax.Units = 'pixels';
pos = ax.Position;
ti = ax.TightInset;

좌표축과 자동으로 계산된 여백을 모두 감싸는 사각형 영역을 정의하는, 요소를 4개 가진 벡터 rect를 만듭니다. rect의 처음 두 개 요소는 좌표축의 왼쪽 아래 코너에 대해 상대적인, 사각형의 왼쪽 아래 코너를 지정합니다. rect의 마지막 두 개 요소는 사각형의 너비와 높이를 지정합니다.

rect = [-ti(1), -ti(2), pos(3)+ti(1)+ti(3), pos(4)+ti(2)+ti(4)];
F = getframe(ax,rect);

imshow를 사용하여, 캡처된 이미지 데이터를 표시합니다.

figure
imshow(F.cdata)

2개의 서브플롯이 있는 Figure를 만듭니다. 상부 서브플롯에 파란색 선을 플로팅합니다. 하부 서브플롯에는 빨간색 선을 플로팅합니다.

ax1 = subplot(2,1,1);
plot(1:10,'b')
ax2 = subplot(2,1,2);
plot(1:10,'r')

하부 서브플롯의 내용을 캡처합니다. getframe은 서브플롯의 내부와 테두리를 캡처합니다. 서브플롯의 윤곽선을 벗어나는 눈금 값이나 레이블은 캡처하지 않습니다.

F = getframe(ax2);

imshow를 사용하여, 캡처된 이미지 데이터를 표시합니다.

figure
imshow(F.cdata)

getframe을 루프에서 사용하여 peaks 함수 진동의 프레임을 기록합니다. 배열을 사전할당(Preallocation)하여 동영상 프레임을 저장합니다.

Z = peaks;
surf(Z)
axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';

loops = 40;
F(loops) = struct('cdata',[],'colormap',[]);
for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    F(j) = getframe(gcf);
end

동영상을 두 번 재생합니다.

fig = figure;
movie(fig,F,2)

입력 인수

모두 축소

캡처할 좌표축으로, axes 객체로 지정됩니다. 현재 좌표축이 아닌 좌표축을 캡처하려면 이 옵션을 사용하십시오.

getframe은 좌표축 윤곽선을 둘러싸는 가장 작은 사각형 내의 내용을 캡처합니다. 모든 눈금 값과 눈금 레이블을 캡처하려면 fig 입력 인수를 대신 사용하십시오.

예: F = getframe(ax);

캡처할 Figure로, figure 객체로 지정됩니다. gcf를 사용하면 현재 Figure를 캡처할 수 있습니다.

예: F = getframe(gcf);

캡처할 사각형 영역으로, [left bottom width height] 형식(단위: 픽셀)의, 요소를 4개 가진 벡터로 지정됩니다. left 요소와 bottom 요소는 사각형의 왼쪽 아래 코너의 위치를 정의합니다. 이 위치는 getframe에 대한 첫 번째 입력 인수로 지정된 Figure 또는 좌표축에 상대적인 위치입니다. width 요소와 height 요소는 사각형의 크기를 정의합니다.

Figure 창 내에 완전히 포함된 사각형을 지정합니다.

예: F = getframe(gcf,[0 0 560 420]);

출력 인수

모두 축소

동영상 프레임으로, 다음 두 개의 필드를 갖는 구조체로 반환됩니다.

  • cdatauint8형 값의 배열로 저장된 이미지 데이터입니다. 이미지 데이터 배열의 크기는 화면 해상도에 따라 달라집니다.

  • colormap — 컬러맵입니다. 트루컬러 시스템에서는 이 필드가 비어 있습니다.

참고

cdata의 크기와 관련하여 고려해야 할 몇 가지 중요한 사항이 있습니다.

  • getframe이 캡처하는 영역(Figure, 좌표축, 또는 rect로 지정된 영역)의 크기를 쿼리하면 해당 크기(단위: 픽셀)가 cdata의 요소 개수와 일치하지 않을 수 있습니다. 이러한 차이가 발생하는 이유는 cdata의 요소 개수는 화면 해상도(및 운영 체제 설정)에 따라 달라지지만 MATLAB®의 픽셀 수는 화면에 표시되는 실제 픽셀 수와 일치하지 않을 수 있기 때문입니다.

  • R2015b부터는 고해상도 시스템을 사용하는 경우 cdata의 크기가 이전 릴리스나 다른 시스템에 비해 더 클 수 있습니다.

세부 정보

모두 축소

픽셀

Windows®Macintosh 시스템에서 거리(단위: 픽셀)는 시스템 해상도와 관계가 없습니다. 즉, 다음과 같습니다.

  • Windows 시스템에서 1픽셀은 1/96인치입니다.

  • Macintosh 시스템에서 1픽셀은 1/72인치입니다.

Linux® 시스템에서 픽셀 크기는 시스템 해상도에 의해 결정됩니다.

  • getframe 사용 시 성능 속도를 최대화하려면 Figure가 화면에 표시되어 있어야 합니다. Figure가 표시되어 있지 않아도 getframe은 Figure를 캡처할 수 있지만 느릴 수 있습니다.

  • 이미지 데이터의 해상도를 더 자세히 제어하려면 print 함수를 대신 사용하십시오. print 함수에 cdata 출력 인수를 사용하면 이미지 데이터가 반환됩니다. resolution 입력 인수는 이미지 해상도를 제어합니다.

참고 항목

| | | | |

R2006a 이전에 개발됨