2022年2月24日 星期四

s1081535 作業 1

一、 作業說明 

輸入指定圖片路徑和欲增加數值進行像素值調整。若圖片為灰階則調整整體數值;為彩色則只調整R值,並針對調整後溢位問題進行處理。

 作業環境

  • MacOS Monterey 12.2
  • PyCharm 2019.3.3
  • Python 3.8
  • OpenCV 4.5.5

 實作功能與方法

讀取指定名稱之圖片

  • 透過input()取得使用者指定之圖片名稱,再使用cv2.imread('檔案名稱/圖檔路徑'),以預設的彩色模式讀取放置在與.py檔之同層位置或指定路徑的圖檔。

判別讀入圖檔為全彩圖或灰階圖

  • 取圖檔中其中一個像素,以R, G, B三項數值是否相等作為判斷依據。若成立則為灰階圖,反之為全彩圖。

灰階圖像素質調整

  • 利用cv2.add( 原始圖片, numpy.array(欲增加數值))之方法進行調整,例:將整體像素質提高100可寫作,cv2.add(img, numpy.array(100))。
  • 利用numpy.clip(圖片, 0, 255),處理像素值溢位狀況。其處理方法為將小於0之數值調整為0,將大於255之數值調整為255。

全彩圖像素質調整

  • 利用'圖片'.shape取得圖片長與寬之值,以雙重for迴圈的形式針對每一個像素進行R值的調整。
  • 又因像素在調整後若產生溢位情形,則會以加總之值mod(%)256作為表示,例如:160+100=260,會以260%256=4表示。因此,在調整像素值之前須先確認是否會出現溢位的狀況,若有出現直接將小於0之數值設為0,大於255之數值設為255;反之則進行正常加法。

顯示結果圖與寫出圖檔

  • 以cv2.imshow('視窗名稱', 圖片)顯示調整後之結果圖。並設定cv2.waitkey(0)直到使用者按下鍵盤數字0則執行cv2.destroyAllWindows()關閉所有顯示視窗。
  • 使用cv2.imwrite('圖片名稱/圖片路徑', 圖片)之方法存取圖檔。


 架構流程圖


五、 執行結果

程式執行介面

bookGray.jpg(灰階圖) 執行結果

bookGray.jpg 結果比較

lennaRGB.tif (全彩圖) 執行結果

lennaRGB.tif 結果比較

自訂圖片(全彩長方圖) 

自訂圖片結果比較



沒有留言:

張貼留言