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