仿写一个功能与cv2.GaussianBlur相同的代码
时间: 2023-10-23 18:27:39 浏览: 175
可以使用NumPy和SciPy库实现高斯模糊的功能,代码如下:
```python
import numpy as np
from scipy.ndimage import convolve
def gaussian_kernel(size, sigma):
"""
Create a 2D Gaussian kernel
"""
x, y = np.mgrid[-size//2 + 1:size//2 + 1, -size//2 + 1:size//2 + 1]
g = np.exp(-((x**2 + y**2)/(2.0*sigma**2)))
return g/g.sum()
def gaussian_blur(image, kernel_size=3, sigma=1):
"""
Apply 2D Gaussian filter to the image
"""
kernel = gaussian_kernel(kernel_size, sigma)
blurred = np.zeros_like(image, dtype=np.float32)
for i in range(3):
blurred[:,:,i] = convolve(image[:,:,i], kernel)
return blurred.astype(np.uint8)
```
其中,`gaussian_kernel`函数生成一个2维的高斯卷积核,`gaussian_blur`函数则将该卷积核应用到输入的图像上,得到模糊后的图像。可以通过调整`kernel_size`和`sigma`参数来控制模糊的程度。
阅读全文