作业总结:磨皮滤镜(双边滤波bilateralFilter)代码实现
雙邊濾波是一種非線性的濾波方法,是結合圖像的空間鄰近度和像素值相似度的一種折衷處理,同時考慮空間與信息和灰度相似性,達到保邊去噪的目的,具有簡單、非迭代、局部處理的特點。之所以能夠達到保邊去噪的濾波效果是因為濾波器由兩個函數構成:一個函數是由幾何空間距離決定濾波器系數,另一個是由像素差值決定濾波器系數.
?
1 Python: cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) → dst?
參數解釋:
-
src:輸入圖像
-
d:過濾時周圍每個像素領域的直徑
-
sigmaColor:在color space中過濾sigma。參數越大,臨近像素將會在越遠的地方mix。
-
sigmaSpace:在coordinate space中過濾sigma。參數越大,那些顏色足夠相近的的顏色的影響越大。
?
import cv2 import numpy as npdef nothing(x):passcv2.namedWindow("image") cv2.createTrackbar("d","image",0,255,nothing) cv2.createTrackbar("sigmaColor","image",0,255,nothing) cv2.ctrateTrackbar("sigmaSpace","image",0,255,nothing) img = cv2.imread(r"E:\src.jpg",0) while(1):d = cv2.getTrackbarPos("d","image")sigmaColor = cv2.getTrackbarPos("sigmaColor","image")sigmaSpace = cv2.getTrackbarPos("sigmaSpace","image")out_img = cv2.bilateralFilter(img,d,sigmaColor,sigmaSpace)cv2.imshow("out",out_img)k = cv2.waitKey(1) & 0xFFif k ==27:break cv2.destroyAllWindows()?
?
備注:
waitKey()函數的功能是不斷刷新圖像,頻率時間為delay,單位為ms。
返回值為當前鍵盤按鍵值。
所以顯示圖像時,如果需要在imshow(“xxxx”,image)后吐舌頭加上while(cvWaitKey(n)==key)為大于等于0的數即可,那么程序將會停在顯示函數處,不運行其他代碼;直到鍵盤值為key的響應之后。
delay>0時,延遲”delay”ms,在顯示視頻時這個函數是有用的,用于設置在顯示完一幀圖像后程序等待”delay”ms再顯示下一幀視頻;如果使用waitKey(0)則只會顯示第一幀視頻。
返回值:如果delay>0,那么超過指定時間則返回-1;如果delay=0,將沒有返回值。?
如果程序想響應某個按鍵,可利用if(waitKey(1)==Keyvalue);?
如果delay<0,等待時間無限長,返回值為按鍵值
經常程序里面出現if( waitKey(10) >= 0 ) 是說10ms中按任意鍵進入此if塊。
?
cv2.waitKey(1) 與 0xFF(1111 1111)相與是因為cv2.waitKey(1) 的返回值不止8位,但是只有后8位實際有效,為避免產干擾,通過 ‘與’ 操作將其余位置0。
?
?
總結
以上是生活随笔為你收集整理的作业总结:磨皮滤镜(双边滤波bilateralFilter)代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 声音池,Android使
- 下一篇: 解决FFmmpeg合成的MP4文件播放没