當前文章

【Python】電腦圖學,修圖軟體原來是這麼運作 - 使用 PIL 讀取圖像

導讀


許多藝術創作,在現代都會進行數位化,不論是繪圖、海報、拍攝、錄影,而且由於人們對「視覺」表現上的重視,更會利用「後製程式」,對這些創作進行視覺性加強。例如在 Adobe Photoshop 中,我們就可以修改影像的「亮度」、「對比」、「色調」等設定,各位有沒有想過,這個軟體究竟是如何達成這些功能的?


若沒有使用鍋 Photoshop 軟體,個人很推薦另外一份替代的線上修圖平台:Photopea Online Photo Editor


如果對電腦科學有相當程度的理解,自然知道我們當前最流行的數位影像格式 - 點陣影像,是由一個個像素點呈現顏色組成;如果要達成上述軟體的功能,我們可以針對這一個個的像素顏色進行「計算」及「修改」去調整!現在,讓我們直接使用 Python 程式碼來實作這些功能,帶你進入電腦圖學的世界!


演示用程式語言:Python


目標說明:


使用 Python 讀取出圖像的 RGB 值,瞭解圖片架構就能進一步控制它。

階段性目標:

  • 用程式碼讀入圖像
  • 使用變數儲存 RGB 值
  • 將 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」數值,與圖片上的像素點一致。

    沒有留言:

    張貼留言

    Suz 數位式 僅供學術交流使用,版面設計原始提供者: Templateism 維護修改者: Suz | Google Blogger Copyright © 2014-2021

    主題圖片來源:richcano. 技術提供:Blogger.