python实现cv中的高斯滤波器
时间: 2023-08-25 16:06:06 浏览: 44
下面是一个 Python 实现的例子,用于实现高斯滤波器的效果。
```python
import cv2
import numpy as np
def gaussian_filter(image, kernel_size=5, sigma=1.4):
# 构造高斯核
kernel = np.zeros((kernel_size, kernel_size), dtype=np.float32)
center = kernel_size // 2
s = 2 * (sigma ** 2)
sum_val = 0
for i in range(kernel_size):
for j in range(kernel_size):
x = i - center
y = j - center
kernel[i, j] = np.exp(-(x ** 2 + y ** 2) / s)
sum_val += kernel[i, j]
kernel /= sum_val
# 对图像进行卷积操作
height, width = image.shape[:2]
img_blur = np.zeros((height, width), dtype=np.float32)
for i in range(center, height - center):
for j in range(center, width - center):
roi = image[i - center:i + center + 1, j - center:j + center + 1]
img_blur[i, j] = np.sum(np.multiply(roi, kernel))
img_blur = np.clip(img_blur, 0, 255).astype(np.uint8)
return img_blur
```
在这个例子中,定义了一个名为 `gaussian_filter` 的函数,它接受一个待处理的图像,一个高斯核大小和一个高斯核在 X 方向上的标准差,然后使用自定义的方法构造高斯核,并对图像进行卷积操作,最后输出模糊后的图像。
使用这个函数的示例代码如下:
```python
img = cv2.imread('example.png')
img_blur = gaussian_filter(img, kernel_size=5, sigma=1.4)
cv2.imshow('Gaussian Blur', img_blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个示例代码读入一张名为 `example.png` 的图像,然后使用 `gaussian_filter` 函数进行高斯模糊处理,其中 `kernel_size` 参数设置为 5,`sigma` 参数设置为 1.4。最后使用 `cv2.imshow` 函数显示模糊后的图像,`cv2.waitKey` 函数等待按键事件,`cv2.destroyAllWindows` 函数关闭所有窗口。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)