一、題目
撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點素值各加上一個整數值 (-255 <= v <= 255 ),並將圖像儲存至一個新圖像檔案中 。
二、環境需求
- windows10
- python 3.7
- opencv 3.4
- numpy 1.15.1
三、演算法解說
根據公式
g(i,j)=α⋅f(i,j)+β ,α是對比值,β是亮度
可以調整圖像的每一點的亮度與對比度。
- 用addWeighted矩陣相加,做上述的公式運算,調整圖像的亮度以及對比度,並避免數值溢位。
- hstack函式,水平疊加原圖跟調整過的圖,讓圖像有比較的對象。
- resizeWindow修改視窗大小,讓兩張圖可以無損的丟進來。
- createTrackbar產生一個UI拉桿條,控制數值時,會呼叫修改的函式,可以邊拉數值,邊看結果,但是數值最低只能到0,所以只能多建立一個控制負數的亮度值。
- imwrite將修改完的圖片儲存在當前路徑裡,檔名需要加上.jpg、.png等等圖片格式。
四、運行畫面
選擇圖源,(1)使用者可以從資料夾拉圖片進來,(2)系統配置好的圖檔。
選擇亮度-255~255
選擇對比度,以100為基準,0~100(-2.0~0),100~200(0~2.0)
原圖(左),調整後的圖(右) 亮度:-236,對比度198(1.96) |
原圖(左),調整後的圖(右) 亮度:99,對比度182(1.64) |
原圖(左),調整後的圖(右) 亮度:-211,對比度182(1.64) |
原圖(左),調整後的圖(右) 亮度:207,對比度133(0.66) |
按esc離開程式,將修改完的圖片儲存在當前資料夾內
沒有留言:
張貼留言