matlab main函数_Python 和MATLAB 制作Gif 图像
主要內容概述:
- 預備知識
- MATLAB 代碼實現GIF
- 使用imageio 生成GIF
- 使用animation 交互式方式生成GIF
- 總結
0,預備知識
首先了解下什么是GIF 圖片,以及常用的圖片格式。
GIF的全稱是Graphics Interchange Format,可譯為圖形交換格式,用于以超文本標志語言(Hypertext Markup Language)方式顯示索引彩色圖像,在因特網和其他在線服務系統上得到廣泛應用。GIF是一種位圖。位圖的大致原理是:圖片由許多的象素組成,每一個象素都被指定了一種顏色,這些象素綜合起來就構成了圖片。
一圖勝千言,GIF 動圖更是圖片中的戰斗機!
下面我們就分別從Python 和MATLAB 介紹Git 動圖的制作方法。
一,在MATLAB 中實現GIF動圖制作
效果:下面是一個制作矩形函數和其頻譜的動圖。
Note:主要的思想就是畫出第一張圖,然后在追加第二張,第三張圖,并設置其延時時間
主要函數介紹:
1 Getframe 函數
F = getframe(h) gets a frame from the figure or axes identified by handle h.
獲取句柄定義的圖片或是坐標的一幀。
如果想獲得圖片的一幀使用的語法為。
F = getframe(gcf);
2 frame2im
Return image data associated with movie frame
幀圖畫轉換為圖像數據
3 rgb2ind
Convert RGB image to indexed image
將RGB 圖片轉換為索引圖片
4 imwrite
Imwrite (A, filename,fmt) writes the image A to the file specified by filename in the format specified by fmt.
5 完整代碼如下:
clc; clear all; close all; N=10000; % sampling numbers Tau0=1; % define initial Tau pic_num = 1; for i=1:100Tau=Tau0/i; TimeRange=linspace(-10*Tau,10*Tau,N); % display time rangeFreqRange=linspace(-200*pi/i,200*pi/i,N); % display frequency rangeHalf_Tau=Tau/2; % -0.5 Tao ==> 0.5 TaoRECT=1/Tau*double(abs(TimeRange)<Half_Tau); % one rectangular pulseSINC=sinc(FreqRange*Tau*pi); % sinc pulse, Xtrasubplot(2,1,1);plot(TimeRange,RECT,'LineWidth',1.5); grid on;xlim([-1 1]); ylim([-0.5 120]);xlabel('Time'); ylabel('Amplitude');subplot(2,1,2);plot(FreqRange,SINC,'LineWidth',1.5); grid on; xlim([-200*pi/i 200*pi/i]); ylim([-0.5 1.5]); xlabel('Frequency'); ylabel('Amplitude');drawnow;F=getframe(gcf);I=frame2im(F);[I,map]=rgb2ind(I,256);if pic_num == 1imwrite(I,map,'impulse.gif','gif', 'Loopcount',inf,'DelayTime',0.1);elseimwrite(I,map,'impulse.gif','gif','WriteMode','append','DelayTime',0.1);endpic_num = pic_num + 1; end二,Python 中GIF動圖的繪制
1,使用imageio 生成GIF 動態圖像
IMAIO是一個Python庫,它提供了一個簡單的接口來讀取和寫入大量的圖像數據,包括動畫圖像、體積數據和科學格式。它是跨平臺的,運行在Python 2 .x和3.x上,并且易于安裝。
imageio.imread() #從指定的文件讀取圖像。返回一個NUMPY數組,該數組帶有元數據的元屬性。注意,圖像數據按原樣返回,并且可能不總是具有uTI8的dType。
def createGif():images = []filenames=sorted((fn for fn in os.listdir('image') if fn.endswith('.png')))# 分解順序和合成順序不一致,造成Gig 混亂n = len(filenames)for i in range (0,n):filename =str(i)+'.png'if (filename in filenames):images.append(imageio.imread('image'+filename)) imageio.mimsave('gif.gif', images,duration=0.1) def main():processImage('impulse.gif')createGif() if __name__=='__main__':main()2,使用animation 交互式方式
介紹:使用animation function 來動態的顯示一個sin函數。
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation x = np.linspace(0, 10, 100) # 生成測試數據 y = np.sin(x)fig, ax = plt.subplots() line= ax.plot(x, y, color='k')def update(num, x, y, line): #num表示迭代次數line.set_data(x[:num], y[:num])line.axes.axis([0, 10, -1.2, 1.2])return line,FuncAnimation函數生成動畫。參數說明:
#fig 進行動畫繪制的figure 的句柄
#func 自定義動畫函數,即傳入剛定義的函數animate
#frames 動畫長度,一次循環包含的幀數
#fargs 除幀數之外的其他需要調用的參數
#init_func 自定義開始幀。
#interval 更新頻率,以ms計
#blit 選擇更新所有點,還是僅更新產生變化的點。應選擇True,但mac用戶請選擇False,否則無法顯示動畫
# 調用FuncAnimation 生成GIF 動畫
ani = animation.FuncAnimation(fig, update, len(x), fargs=[x, y, line],
interval=25, blit=True,repeat= True)
ani.save('test.gif') # 保存成GIF動態圖格式
plt.show()
總結:
本文主要講述了GIF 圖片格式及用MATLAB 和Python的實現方式。
其中Python實現介紹了兩種方式:1用現有的圖片生成。2使用animation函數實現。
總結
以上是生活随笔為你收集整理的matlab main函数_Python 和MATLAB 制作Gif 图像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京环球影城要门票吗
- 下一篇: 引导界面图标好大_游戏里那些图标和界面,