2022年2月23日 星期三

s1081516 作業1

作業說明

撰寫一個程式讀取一張圖片,將圖像中每一個點像素的值各加上一個數值。如果輸入

圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖像(RGB),則只改變

每個像素的 R 值。注意修改後像素值溢位 Overflow 問題(像素值介於 0 與 255 之間)。

開發環境

  • Windows 10
  • Anaconda 4.10.3
  • Python 3.9.7
  • numpy 1.20.3
  • opencv-python 4.5.5.62

程式說明

1 輸入圖片的路徑,當輸入-1結束程式

        👉如果讀不到圖片,印出錯誤訊息後重新輸入

2 輸入要在圖像中每個像素增加的數值(可為負數)

3 用Flag為IMREAD_UNCHANGED讀圖片後用cv2.ndim判斷是灰階圖還是彩圖

4 如果是灰階圖用Gray(img)改變灰階值,而全彩圖用Color(img)改變R值

        👉方法為用兩層的for loop分別改每一個像素的值,改變的值為2輸入的值

5 秀出原本的圖片和新的圖片

        👉用np.hstack(舊圖片,新圖片)把兩張圖片串接在一起,比較方便比較

6 關閉圖片視窗後輸入要產生的圖片檔案名稱

        👉如果輸入的名稱未包含 .jpg或 .tif,產生的圖片名稱會自動加上.jpg

7 產生新圖片的檔案(只會有新圖片)

執行結果

灰階圖(ndim = 2)

原圖

增加100(+100)
減少100(-100)

全彩圖(ndim = 3)

原圖
增加100(+100)
減少100(-100)



沒有留言:

張貼留言