一、 作業說明
輸入指定圖片路徑和欲增加數值進行像素值調整。若圖片為灰階則調整整體數值;為彩色則只調整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 結果比較
|
自訂圖片(全彩長方圖)
|
自訂圖片結果比較 |
沒有留言:
張貼留言