[Matlab] 매트랩에서 GIF 이미지(애니메이션) 파일 만들기
이번 포스팅은 매트랩에서 동적 이미지 GIF 파일을 생성하는 방법을 소개하겠습니다. 매트랩에서 Figure 창을 스캔해서 저장하는 방식이며 함수 형태로 저장해두면, 그때그때 세미나나 평가 결과 등의 첨부자료로 쉽게 사용하실 수 있습니다.
0. 선행 예제
plot, drawnow, cla 등과 같이 figure를 화면에 띄우는 매트랩 기본함수가 익숙하시지 않다면 이전 포스팅을 참고하셔도 좋을 것 같습니다.
deep-eye.tistory.com/8?category=401244
[Matlab] 매트랩을 이용한 실시간 그래프 그리기
매트랩은 다양한 분야에서 분석하거 설계하는데 활용되고 있습니다. 직관적으로 데이터를 확인할 수 있어 데이터분석 입문으로 시작해도 좋다 생각합니다. 특히, 논문에 사용될 그래프를 도시
deep-eye.tistory.com
1. 매트랩 코드
% *********************************************
% GIF_IMAGE_GENERATER_2D
% Deep.I Inc.
% https://deep-eye.tistory.com
% deepi.contact.us@gmail.com
% *********************************************
filename = 'test.gif'; % 저장될 gif 파일 이름
figure(1); % figure 생성
% 프레임 수
for i = 1:30
cla
% imshow()
drawnow
% figure에서의 frame을 가져욤
frame = getframe(1);
% 가져온 frame을 image로 변화시킴
img = frame2im(frame);
% index화된 이미지로 변화시킴
[imind cm] = rgb2ind(img,256);
if i == 1
%% n 회 반복 + 1/24초의 딜레이를 가지는 gif 생성. 무한 반복은 inf로 함
imwrite(imind,cm,filename,'gif','Loopcount',1,'DelayTime',1/24);
else
%% 똑같은 파일에 추가를 할 것이므로 append로 함
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',1/24);
end
end
핵심은 1. figure를 사전에 지정해주는 것과 imshow()나 plot() 함수 이후 figure 창을 이미지로 전 처리하는 과정입니다. figure를 그대로 저장하다 보니 코드가 진행 중일 때 창을 변형시키면 gif에도 반영되는 것 같습니다. 보통 저는 gif로 변환된 파일을 꿀캠 같은 gif 편집 툴을 활용해서 속도와 크기 등을 그림 1과 같이 2차적으로 편집하곤 합니다.
# Jetson 시리즈 응용 임베디드 머신러닝 시스템 제작
# 머신러닝 프로젝트 제작, 상담 및 컨설팅 / 머신러닝 접목 졸업작품 컨설팅
# email : deepi.contact.us@gmail.com
# site : www.deep-i.net