Image-Processing
圖像處理軟體(程式運作平台為Windows,Python實作)
功能有美白、磨皮、濾鏡(雕刻、哈哈鏡、波浪、冰凍、懷舊、黑白、模糊、灰階)
界面設計
pyqt5設計,UI和功能代碼分離。其中UI利用工具QT designer設計,生成.ui檔案以後利用pyuic轉換成python代碼。
【A】.圖檔顯示界面用scrollArea控件,其中填充scrollAreaWidgetContents這個控件,再在裡面用Qlabel顯示圖檔,scrollArea的屬性設定裡設定為顯示滾動條以確定圖檔太大時可以通過滾動條來檢視整張圖檔。
【B】.選項控件部分用QButton,QSpin,QCheckBox控件分别實作按鈕、數字選擇框、複選框功能。信号槽在主程式中實作。
功能設計和實作
【磨皮】:先使用雙邊濾波對圖像處理平滑圖檔噪聲可以較好地保留邊緣,繼續使用高斯模糊對細節進行處理,參數由滑動條spin動态控制。
【美白】:給圖像中的每個像素增加灰階值,addWeighted函數,對自身加成,第五個參數給圖像中每個像素增加一定的像素值。
【濾鏡】:濾鏡的算法的主要原理:
黑白:cv2.threshold函數處理圖像
灰階:以opencv的灰階讀入後再寫出圖像
模糊:高斯模糊函數GaussianBlur處理
懷舊、冰凍、浮雕:将原圖顔色通道分離,對每一點的RGB三色調整,具體算法參考網上部落格給出
波浪:利用正弦函數給出的位置,将正弦波涉及的區域的像素值調整方位
哈哈鏡:求出圖檔所能放置的最大圓,圓内部分像素點按[離中心距離]與[圓半徑]之比縮放,即外部的點的像素等于内部點的像素。
【選項選中與撤銷】類内成員變量設定state_filter數組和state_beauti、state_buff表明各個選項是有勾選,當觸發複選框且狀态為選中的時候會調用顯示函數showPic,showPic内部判斷上述的state,顯示應該顯示的内容。
【緩存處理】濾鏡功能第一次計算的時候時間較長,同樣利用flag儲存第一次處理結果,之後重新勾選該選項時即可使用緩存的圖檔
【另附】
1.打開檔案選項關聯的函數裡增加了一些代碼用于重置每次打開檔案的時候需要重置一些狀态,以確定不會和第一次打開的圖像混淆。
2.由于濾鏡的覆寫性太強,是以融合功能隻用于美白和磨皮兩項,即同時選中美白和磨皮兩項的時候回将兩幅圖疊加起來。
3.由于以上原因,showPic函數增加了參數判斷是否要顯示濾鏡(因為濾鏡和磨皮美白這兩項的融合有沖突)