OpenCV學習筆記 模糊操作

2021-08-19 22:28:05 字數 2479 閱讀 5207

模糊操作的作用是在時減低雜訊。

模糊操作有均值模糊,中值模糊,高斯模糊和自定義模糊

模糊操作的基本原理:

1、基於離散卷積

2、定義好每乙個卷積核

3、不同的卷積核得到不同的卷積效果

4、模糊是卷積的一種表象

均值濾波:用卷積核中的全體畫素的平均值來代替原來畫素值

中值濾波:將卷積核中的全體畫素從小到大排序,保留中值

高斯濾波:

具體**:

importcv2ascv

importnumpyasnp

#均值模糊

defblur_demo(img):

dst = cv.blur(img,(5,5))

cv.imshow('blur_dome',dst)

#中指模糊

defmedian_blur_demo(img): #中指模糊 對椒鹽模糊 效果最好

dst = cv.medianblur(img,5)

cv.imshow('median_blur_dome',dst)

#防止數值超出範圍

defclamp(pv):

ifpv > 255:

return255

ifpv < 0:

return0

else:

returnpv

#高斯模糊

defgaussian_noise(img):

h ,w ,c = img.shape

forrowinrange(h):

forcolinrange(w):

s = np.random.normal(0,20,3)

b = img[row, col, 0] # blue

g = img[row, col, 1] # green

r = img[row, col, 2] # red

# 為了防止操作後的數值超出範圍,增加乙個判斷函式

img[row, col ,0] = clamp(b + s[0])

img[row, col, 1] = clamp(g + s[1])

img[row, col, 2] = clamp(r + s[2])

cv.imshow('noise img',img)

dst = cv.gaussianblur(img,(5,5),0)

#高斯模糊函式會根據x計算sigma 根據sigma計算x 所以兩個引數只用確定乙個

cv.imshow('gaussian blur',dst)

#自定義模糊

defcustom_blur_demo(img):

# kennel = np.ones([5,5],np.float32)/25

#卷積核大小是5*5 引數型別規定為float32 因為這裡我們想做均值模糊 所以必須再除以5*5

kennel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32) #固定寫法 表示銳化操作,可以使影象更立體

dst = cv.filter2d(img,-1,kennel) #-1 就表示和原圖一樣

cv.imshow('custom_blur_demo',dst)

img = cv.imread('img/lena.png')

cv.namedwindow('img',cv.window_autosize)

cv.imshow('img',img)

# blur_demo(img)

# median_blur_demo(img)

t1 = cv.gettickcount()

gaussian_noise(img)

t2 = cv.gettickcount()

time = (t2-t1)/cv.gettickfrequency()

print('time consume :%s '% (time*1000) )

cv.waitkey(0)

cv.destroyallwindows()

OpenCV實現模糊操作

模糊操作的基本原理 1.基於離散卷積,2.定義好每個卷積核,3.不同卷積核得到不同的卷積效果,4.模糊是卷積的一種表象 import cv2 as cv import numpy as np def blur demo image 均值模糊 dst cv.blur image,5,5 5,5 模糊引...

學習OpenCV 羽化(模糊邊緣)

原文出處 在photoshop裡,羽化就是使你選定範圍的圖邊緣達到朦朧的效果。羽化值越大,朦朧範圍越寬,羽化值越小,朦朧範圍越窄。可根據你想留下圖的大小來調節。演算法分析 1 通過對rgb值增加額外的v值實現朦朧效果 2 通過控制v值的大小實現範圍控制。3 v 255 當前點point距中點距離的平...

OpenCV學習之平滑(模糊)

void boxfilter inputarray src,outputarray dst,int ddepth,size ksize,point anchor point 1,1 意味著定位畫素是核的中心 bool normalize true int bordertype border defa...