導讀
許多藝術創作,在現代都會進行數位化,不論是繪圖、海報、拍攝、錄影,而且由於人們對「視覺」表現上的重視,更會利用「後製程式」,對這些創作進行視覺性加強。例如在 Adobe Photoshop 中,我們就可以修改影像的「亮度」、「對比」、「色調」等設定,各位有沒有想過,這個軟體究竟是如何達成這些功能的?
若沒有使用鍋 Photoshop 軟體,個人很推薦另外一份替代的線上修圖平台:Photopea Online Photo Editor
如果對電腦科學有相當程度的理解,自然知道我們當前最流行的數位影像格式 - 點陣影像,是由一個個像素點呈現顏色組成;如果要達成上述軟體的功能,我們可以針對這一個個的像素顏色進行「計算」及「修改」去調整!現在,讓我們直接使用 Python 程式碼來實作這些功能,帶你進入電腦圖學的世界!
演示用程式語言:Python
目標說明:
使用 Python 讀取出圖像的 RGB 值,瞭解圖片架構就能進一步控制它。
階段性目標:
如果更喜歡用簡報的方式進行閱讀,可以進入教材連結:Python OpenCV圖學入門-流程簡報
第一步、進行圖像讀取
import PIL.Image
import matplotlib.pyplot as plt # 導入直接顯示圖像的套件matplotlib
%matplotlib inline # 在 jupyter-notebook 直接顯示圖像
img = PIL.Image.open("你的圖片檔名.副檔名")
第二步、圖像顯示
img
使用 Jupyter-Notebook 可以一步步檢查程式是否能正常運作,修改起來也很方便。不過若是不習慣,也可以將以上程式輸入在「Python-IDLE」或「Spyder」內去執行
第三步、將圖像的像素值一一讀取出
pixel = img.load()
width = img.size[0]
height = img.size[1]
demo = open('rgb.txt','wb+') # 建立一個檔案儲存圖像的 rgb 值
for x in range(width): # 圖像寬度
for y in range(height): # 圖像高度
r, g, b = pixel[x, y] # 分別用 r, g, b 這三個變數存入讀取值
rgb = (r, g, b)
demo.write((str(rgb)+"\n").encode()) # 將 rgb 值寫進檔案中
demo.close()
步驟三的程式碼,主要目的是將圖片上每一點像素的RGB數值讀取出來,另外寫在一個文字檔中,藉此理解數位圖像的基本原理;後續想做「修圖」,也是從這些RGB值下手。
輸出的純文字檔案,會在與程式碼腳本相同的資料夾目錄中,打開來可以看到很多「RGB」數值,與圖片上的像素點一致。
沒有留言:
張貼留言