2022年9月4日 星期日

讀一張衛星雲圖再寫出去

寫一個python程式,讀一張衛星雲圖,經過一些處理之後,產生一個新的圖檔。
這個方法適用於各種圖檔,不一定是衛星雲圖。
首先,先到中央氣象局官網下載一張衛星雲圖,正好今天有個宣嵐諾颱風,於是我選了這張黑白的紅外線衛星雲圖。

程式碼如下:
from PIL import Image
import numpy as np

file = 'LCC_IR1_MB_2750-2021-08-15-16-40.jpg'
im = Image.open(file) # 讀取圖片檔案
r,g,b = im.split()  # 影像RGB圖層分割

r_data = np.array(r) # R圖層數值處理
r_data = r_data/2    # R圖層數值減半
r_new  = Image.fromarray(r_data,'L')  # 建立新的R(紅光)影像
im2    = Image.merge('RGB',(r_new,g,b))
#im2.show()
im2.save('NewImage.jpg') # 存圖檔
其中
r_data = np.array(r) # R圖層數值處理
r_data = r_data/2    # R圖層數值減半
r_new  = Image.fromarray(r_data,'L')  # 建立新的R(紅光)影像
為了要讓輸出的圖與輸入的圖有差異,於是把R圖層轉換為numpy物件進行數值的計算,在轉換回Image的物件。要注意,圖層中的數值必需是0~255之間的整數,所以必須先把數值型態轉換為無號短整數(uint8)再轉為Image物件。
程式執行後得到的新圖為:


沒有留言:

張貼留言

用matplotlib畫衛星雲圖

用另外一種方式畫衛星雲圖。這方法式結合了matplotlib、pyresample和cartopy 使用viridis這個色階畫出來長這樣。