2022年2月23日 星期三

s1081528 作業1

作業說明

撰寫一個程式讀取一張圖片,將圖像中每一個點像素的值各加上一個數值。如果輸入圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖(RGB),則只改變每個像素的R值。

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

開發環境

  • Windows 10
  • Visual Studio Code
  • Anaconda 4.11.0
  • OpenCV 4.5.5

程式說明

  1. 使用imread來讀取圖像。
  2. 判斷目前讀入的影像為灰階或全彩圖,如果每個像素中B、G、R通道的值相同,則為灰階圖。
  3. 判斷輸入的數字是否超過範圍(-255~255),如超出範圍,則重新輸入。負數為調暗,正數為調亮。
  4. 如果圖像為全彩圖像,則改變每一點像素R通道的數值,加上輸入的數字;如果圖像為灰階圖像,則改變每一點像素的數值,加上輸入的數字。
  5. 當相加後的像素值大於255,則將其數值視為255;當相加後的像素值小於0,則將其數值視為0。
  6. 用imwrite儲存修改後的圖像。
  7. 用imshow顯示修改後的圖像。

實作結果

超出範圍:

輸入260或-260(顯示out of range)


灰階圖像:

原圖

輸入100

輸入-100

彩色圖像:

原圖

輸入100

輸入-100


沒有留言:

張貼留言