举例高斯滤波的python程序,复杂一点
时间: 2024-05-01 19:19:14 浏览: 42
以下是一个复杂一点的高斯滤波的Python程序:
```python
import cv2
import numpy as np
def gaussian_kernel(size, sigma):
kernel = np.zeros((size, size), dtype=np.float32)
center = size // 2
for i in range(size):
for j in range(size):
x = i - center
y = j - center
kernel[i, j] = np.exp(-(x**2 + y**2) / (2 * sigma**2))
return kernel / (2 * np.pi * sigma**2)
def gaussian_filter(image, kernel_size=3, sigma=1.0):
kernel = gaussian_kernel(kernel_size, sigma)
filtered_image = cv2.filter2D(image, -1, kernel)
return filtered_image
if __name__ == '__main__':
image = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
filtered_image = gaussian_filter(image, kernel_size=5, sigma=1.5)
cv2.imshow('image', image)
cv2.imshow('filtered image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
该程序包含以下功能:
1. `gaussian_kernel(size, sigma)`:生成一个大小为`size`、标准差为`sigma`的高斯核;
2. `gaussian_filter(image, kernel_size=3, sigma=1.0)`:对输入的灰度图像`image`进行高斯滤波,可调整高斯核的大小和标准差;
3. 在主函数中读入一张测试图像,对其进行高斯滤波,并将原图像和滤波后的图像显示出来。
该程序使用了OpenCV库来读取和显示图像。