给图像加高斯模糊 python代码
时间: 2024-09-18 22:03:43 浏览: 28
在Python中,我们可以使用PIL(Pillow)库来进行图像处理,包括添加高斯模糊。下面是一个简单的示例代码:
```python
from PIL import Image, ImageFilter
def apply_gaussian_blur(image_path, output_path, blur_radius):
# 打开图片
img = Image.open(image_path)
# 应用高斯模糊滤镜
blurred_img = img.filter(ImageFilter.GaussianBlur(blur_radius))
# 保存模糊后的图片
blurred_img.save(output_path)
# 使用函数
blur_radius = 5 # 高斯模糊半径,你可以调整这个值
input_image = "input.jpg" # 输入图片路径
output_image = "blurred_output.jpg" # 输出模糊图片路径
apply_gaussian_blur(input_image, output_image, blur_radius)
```
在这个例子中,`blur_radius`参数决定了模糊的程度。你可以根据需要调整这个值,数值越大,模糊效果越明显。
相关问题
图像加运动模糊 python代码
在Python中,我们可以使用OpenCV库来添加运动模糊效果到图像上。OpenCV提供了丰富的图像处理功能,包括模糊操作。以下是一个简单的例子,展示如何对图像进行径向或高斯运动模糊:
```python
import cv2
import numpy as np
# 加载图像
image = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
# 定义模糊核(kernel),例如高斯核或径向核
# 高斯模糊核
kernel_size = 5
gaussian_kernel = cv2.getGaussianKernel(kernel_size, 0)
# 或者径向模糊核
# radial_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (kernel_size, kernel_size), (kernel_size // 2, kernel_size // 2))
# 对图像应用模糊
# 高斯模糊
blurred_image = cv2.filter2D(image, -1, gaussian_kernel)
# 或径向模糊,这里径向模糊需要先进行腐蚀操作(预处理),因为OpenCV的motion_blur函数不支持单独的径向模糊
blurred_image = cv2.morphologyEx(image, cv2.MORPH_DILATE, radial_kernel)
blurred_image = cv2.filter2D(blurred_image, -1, gaussian_kernel)
# 显示原图和模糊后的图像
cv2.imshow("Original Image", image)
cv2.imshow("Blurred Image", blurred_image)
# 等待按键,然后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
```
计算原始图像的高斯金字塔Python代码
计算原始图像的高斯金字塔是一种常用的图像处理方法,它可以将原始图像分解成多个不同尺度的图像,以便于后续的处理。下面是一个简单的Python代码实现:
```python
import cv2
import numpy as np
# 读取原始图像
img = cv2.imread('image.jpg')
# 定义高斯金字塔的层数
level = 3
# 定义高斯核的大小
ksize = 3
# 初始化高斯金字塔
gaussian_pyramid = [img]
# 生成高斯金字塔
for i in range(level):
# 计算高斯模糊
gaussian = cv2.GaussianBlur(gaussian_pyramid[i], (ksize, ksize), 0)
# 降采样
downsample = cv2.pyrDown(gaussian)
# 添加到高斯金字塔中
gaussian_pyramid.append(downsample)
# 显示高斯金字塔
for i, layer in enumerate(gaussian_pyramid):
cv2.imshow('Gaussian Pyramid Layer {}'.format(i), layer)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码使用了OpenCV库中的`cv2.GaussianBlur()`函数来进行高斯模糊操作,使用了`cv2.pyrDown()`函数来进行降采样操作。其中`gaussian_pyramid`为高斯金字塔列表,`level`为高斯金字塔的层数,`ksize`为高斯核的大小。代码执行完成后,将会显示生成的高斯金字塔图像。
阅读全文