# -*- coding: utf-8 -*-
import sys
import cv2
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
def gaussBlur(img,sigma,h,w,_boundary='fill',_fillvalue=0):
gaussKernel_x=cv2.getGaussianKernel(sigma,w,cv2.CV_64F)
gausskernel_x=np.transpose(gaussKernel_x) #转置
gaussBlur_x=signal.convolve2d(img,gaussKernel_x,mode='same',boundary=_boundary,fillvalue=_fillvalue)
gaussKernel_y=cv2.getGaussianKernel(sigma,h,cv2.CV_64F)
gaussBlur_xy=signal.convolve2d(gaussBlur_x,gaussKernel_y,mode='same',boundary=_boundary,fillvalue=_fillvalue)
blurimg=np.round(gaussBlur_xy)
blurimg=blurimg.astype(np.uint8)
return blurimg
if __name__=="__main__":
if len(sys.argv)>1 :
img = cv2.imread(sys.argv[1],0)
else:
print('None')
cv2.imshow('img',img)
blurimg=gaussBlur(img,25,100,100,'symm',0)#越平滑越模糊
cv2.imshow('gaussblur',blurimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
原图-高斯平滑处理后


该博客介绍了一种使用Python和Scipy库实现高斯模糊的方法。通过调用`cv2.getGaussianKernel`获取高斯核,然后使用`signal.convolve2d`进行卷积操作,对图像进行平滑处理。示例代码展示了如何读取图像并应用高斯模糊,最后展示结果。
706

被折叠的 条评论
为什么被折叠?



