作業說明
撰寫一個程式讀取一張圖片,將圖像中每一個點像素的值各加上一個數值。如果輸入
圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖像(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)
沒有留言:
張貼留言