python opencv 模糊操作

2022-03-30 19:50:20 字數 3522 閱讀 4220

@不要在奮鬥的年紀 選擇安逸

均值模糊

1、基於離散卷積

2、定義好每個卷積核

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

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

均值模糊 (2,8)高模糊2 寬模糊8

defblur_demo(image):

dst = cv.blur(image,(2,8))

cv.imshow(

'blur_demo

',dst)

#中值模糊 適合椒鹽雜訊去噪

defmedian_blur_demo(image):

dst = cv.medianblur(image,5)

cv.imshow(

'median_blur_demo

',dst)

#自定義模糊

defcustomer_blur_demo(image):

#定義卷積核---均值模糊的效果

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

#定義卷積核---銳化

kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)

dst = cv.filter2d(image,-1,kernel=kernel)

cv.imshow(

'customer_blur_demo

',dst)

高斯分布的概率密度函式

numpy.random.normal(loc=0.0, scale=1.0, size=none)
引數的意義為:

loc:float

概率分布的均值,對應著整個分布的中心center

scale:float

概率分布的標準差,對應於分布的寬度,scale越大越矮胖,scale越小,越瘦高

size:int or tuple of ints

輸出的shape,預設為none,只輸出乙個值,可以指定輸出值個數返回列表

我們更經常會用到np.random.randn(size)所謂標準正太分布(μ=0, σ=1),對應於np.random.normal(loc=0, scale=1, size)

定義高斯雜訊

defgaussian_noise(image):

h,w,ch =image.shape

for row in

range(h):

for col in

range(w):

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

均值為0 方差為20 輸出3個值

b = image[row,col,0] #

blue

g = image[row,col,1] #

green

r = image[row,col,2] #

red#

給blue層加上正態分佈噪點

高斯模糊:這裡(5, 5)表示高斯矩陣的長與寬都是5 標準差取6,當取尺寸(5,5)時標準差失效、當取尺寸(0,0)時標準差有效。並且高斯矩陣的尺寸越大或者標準差越大,處理過的影象模糊程度越大

"""dst = cv.gaussianblur(src,(5,5),6)

cv.imshow(

'gaussian blur1

',dst)

dst = cv.gaussianblur(src,(0,0),10)

cv.imshow(

'gaussian blur2

',dst)

高斯模糊只考慮了權重,只考慮了畫素空間的分布,沒有考慮畫素值和另乙個畫素值之間差異的問題,如果畫素間差異較大的情況下(比如影象的邊緣),高斯模糊會進行處理,但是我們不需要處理邊緣,要進行的操作就叫做邊緣保留濾波(epf)知識點:邊緣輪廓差異較大的時候得到保留、

案例:

"""

#epf-高斯雙邊濾波

其中各引數所表達的意義:

src:原影象;

d:畫素的鄰域直徑,可有sigmacolor和sigmaspace計算可得;

sigmacolor:顏色空間的標準方差,一般盡可能大;

sigmaspace:座標空間的標準方差(畫素單位),一般盡可能小。

"""def

bi_demo(image):

dst = cv.bilateralfilter(image,0,150,10)

cv.imshow(

'bilateralfilter

',dst)

"""#epf-均值偏移濾波

其中各引數所表達的意義:

src:原影象;

sp:空間窗的半徑(the spatial window radius);

sr:色彩窗的半徑(the color window radius);

注意: 通過均值遷移來進行邊緣保留濾波有時會導致影象過度模糊

"""def

shift_demo(image):

dst = cv.pyrmeanshiftfiltering(image,10,50)

cv.imshow(

'pyrmeanshiftfiltering

',dst)

python OpenCV學習筆記(八) 模糊操作

import cv2 as cv import numpy as np defblur demo image dst cv.blur image,1 3 前後為xy軸模糊的程度 cv.imshow blur demo dst src cv.imread d cv.namedwindow input ...

MyBatis框架實現模糊分頁以及動態操作

1 模糊查詢 模糊查詢 listselectlike1 string name listselectlike2 emp emp listselectlike3 emp emp listselectlike4 map map 對映檔案 select from emp where name like s...

python opencv 安裝整理

這兩天比較有空,在公司內想學習一下opencv,又不想安裝vc 所以就那個python看opencv。安裝環境本來很簡單 但是我python是64的 估計也很多 而opencv的安裝要有乙個numpy庫 這個在官網上只有32位的 所以,事情變得複雜起來。網上找了一下,只道有提供64位版的numpy庫...