作業說明
撰寫一個程式讀取一張圖片,將圖像中每一個點像素的值各加上一個數值。如果輸入圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖(RGB),則只改變每個像素的R值。
注意修改後像素值溢位Overflow問題(像素值介於0與255之間)。
開發環境
- Windows 10
- Visual Studio Code
- Anaconda 4.11.0
- OpenCV 4.5.5
程式說明
- 使用imread來讀取圖像。
- 判斷目前讀入的影像為灰階或全彩圖,如果每個像素中B、G、R通道的值相同,則為灰階圖。
- 判斷輸入的數字是否超過範圍(-255~255),如超出範圍,則重新輸入。負數為調暗,正數為調亮。
- 如果圖像為全彩圖像,則改變每一點像素R通道的數值,加上輸入的數字;如果圖像為灰階圖像,則改變每一點像素的數值,加上輸入的數字。
- 當相加後的像素值大於255,則將其數值視為255;當相加後的像素值小於0,則將其數值視為0。
- 用imwrite儲存修改後的圖像。
- 用imshow顯示修改後的圖像。
實作結果
超出範圍:
輸入260或-260(顯示out of range)
灰階圖像:
原圖
輸入100
輸入-100
彩色圖像:
原圖
輸入100
輸入-100
沒有留言:
張貼留言