1.題目說明
撰寫一個程式讀取ㄧ張圖片,將圖像中每一個點像素的值各加上一個數值。如果輸入 圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖像(RGB),則只改變 每個像素的 R 值。 注意修改後像素值溢位 Overflow 問題(像素值介於 0 與 255 之間)。
2.使用環境
windows 10Visual Studio 2022Opencv 4.5.4C++
3.實作說明
1.輸入欲改變的值 value。
2. 輸入圖片路徑並且判斷有沒有這一張圖片,沒有的話輸出Image not exist. 程式結束。
3. 用函式(iscolorful)判斷輸入圖片是彩色圖還是灰階圖,利用灰階圖的RGB數值都是一樣的特性來判斷。
4.若為灰階圖則改片圖片亮度,修改圖片RGB的素質並且保持同一個像素的數值R=G=B,依照前面輸入的value來修改並且用max函式讓RGB值在0~255之間,過大則用255代替,過小用0代替。
5.彩色照片只修改R的數值其餘不動,修改方式跟灰階圖片一樣讓R值在0~255之間,過大則用255代替,過小用0代替。
4.實作結果
step1 + step2
路徑錯誤的情況
判斷是否為有色照片
step3 + step4
處理灰階照片
左邊為條亮80(value=-80) 中間為原圖 右邊為條暗80(value = 80)
step3 + step5
處理彩色照片 左邊為R值-100 中間為原圖 右邊為R值+100
沒有留言:
張貼留言