帮我编写一段代码:结合PIL库,读入一幅图片(图片不宜过大,320*240足够),导入到numpy数组中,查看该数组的类型和数据内容。将图片添加高斯噪声,显示原始图和噪声图片,查看图片的变化。利用numpy实现图片的局部裁剪、左右翻转、横竖翻转等功能,并显示。
时间: 2024-05-11 08:15:04 浏览: 82
好的,以下是为您编写的Python代码:
```
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
# 读入一幅图片,导入到numpy数组中,查看该数组的类型和数据内容
img = Image.open('image.png')
img_arr = np.asarray(img)
print('图片的类型为:', type(img_arr))
print('图片的数据内容为:\n', img_arr)
# 添加高斯噪声,显示原始图和噪声图片,查看图片的变化
mean = 0 # 均值
var = 0.1 # 方差
sigma = var**0.5 # 标准差
gaussian_noise = np.random.normal(mean, sigma, (img_arr.shape))
img_with_noise = img_arr + gaussian_noise
plt.subplot(121), plt.imshow(img_arr), plt.title('Original Image')
plt.subplot(122), plt.imshow(img_with_noise), plt.title('Image with Gaussian Noise')
plt.show()
# 利用numpy实现图片的局部裁剪、左右翻转、横竖翻转等功能,并显示
cropped_img = img_arr[60:180, 80:240]
flip_left_right = np.fliplr(img_arr)
flip_top_bottom = np.flipud(img_arr)
plt.subplot(221), plt.imshow(img_arr), plt.title('Original Image')
plt.subplot(222), plt.imshow(cropped_img), plt.title('Cropped Image')
plt.subplot(223), plt.imshow(flip_left_right), plt.title('Left-Right Flipped Image')
plt.subplot(224), plt.imshow(flip_top_bottom), plt.title('Top-Bottom Flipped Image')
plt.show()
```
希望对您有帮助!
阅读全文