结合PIL库,读入一幅图片(图片不宜过大,320*240足够),导入到numpy数组中,查看该数组的类型和数据内容。将图片添加高斯噪声,显示原始图和噪声图片,查看图片的变化。利用numpy实现图片的局部裁剪、左右翻转、横竖翻转等功能,并显示。
时间: 2024-05-11 20:15:04 浏览: 140
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
5星 · 资源好评率100%
好的,这是一个技术问题,让我来解答。首先,您可以使用PIL库中的Image类来读入一张图片并导入到numpy数组中:
```python
from PIL import Image
import numpy as np
# 读入图片
img = Image.open("your_image_path")
# 转换为numpy数组
img_arr = np.array(img)
# 查看数组类型和数据内容
print("数组类型:", img_arr.dtype)
print("数组内容:", img_arr)
```
接下来,添加高斯噪声并显示:
```python
from scipy import ndimage
# 添加高斯噪声
noisy_img = ndimage.gaussian_filter(img_arr, sigma=5)
# 显示原始图和噪声图片
Image.fromarray(img_arr).show()
Image.fromarray(noisy_img).show()
```
为了实现局部裁剪、左右翻转、横竖翻转等功能,您可以使用numpy的切片功能和翻转函数:
```python
# 局部裁剪
cropped_img = img_arr[100:200, 50:150, :]
# 左右翻转
flipped_lr_img = np.fliplr(img_arr)
# 横竖翻转
flipped_ud_img = np.flipud(img_arr)
# 显示图片
Image.fromarray(cropped_img).show()
Image.fromarray(flipped_lr_img).show()
Image.fromarray(flipped_ud_img).show()
```
最后,您可以轻松地实现这些功能并显示结果。请注意,这些功能只是示例,您可以根据自己的需求进行修改和扩展。
阅读全文