- Python Pillow教程
- 蟒蛇Pillow - 主页
- Python Pillow - 概述
- Python Pillow - 环境设置
- Python Pillow - 使用图像模块
- Python Pillow - 处理图像
- Python Pillow - 创建缩略图
- Python Pillow - 合并图像
- Python Pillow - 模糊图像
- Python Pillow - 裁剪图像
- Python Pillow - 翻转和旋转图像
- Python Pillow - 调整图像大小
- Python Pillow - 创建水印
- Python Pillow - 向图像添加滤镜
- Python Pillow - 图像上的颜色
- Python Pillow - ImageDraw 模块
- Python Pillow - 图像序列
- Python Pillow - 在图像上写入文本
- Python Pillow - 使用 Numpy 进行机器学习
- Python Pillow 有用资源
- Python Pillow - 快速指南
- Python Pillow - 有用的资源
- Python Pillow - 讨论
Python Pillow - 使用 Numpy 进行机器学习
在本章中,我们使用 numpy 来使用 python 成像库“pillow”来存储和操作图像数据。
在继续本章之前,请在管理员模式下打开命令提示符并在其中执行以下命令来安装 numpy -
pip install numpy
注意- 仅当您安装并更新了 PIP 时,此功能才有效。
从 Numpy 数组创建图像
使用 PIL 创建 RGB 图像并将其保存为 jpg 文件。在下面的例子中,我们将 -
创建一个 150 x 250 像素的阵列。
用橙色填充数组的左半部分。
用蓝色填充阵列的右半部分。
from PIL import Image import numpy as np arr = np.zeros([150, 250, 3], dtype=np.uint8) arr[:,:100] = [255, 128, 0] arr[:,100:] = [0, 0, 255] img = Image.fromarray(arr) img.show() img.save("RGB_image.jpg")
输出
创建灰度图像
创建灰度图像与创建 RGB 图像略有不同。我们可以使用二维数组来创建灰度图像。
from PIL import Image import numpy as np arr = np.zeros([150,300], dtype=np.uint8) #Set grey value to black or white depending on x position for x in range(300): for y in range(150): if (x % 16) // 8 == (y % 16)//8: arr[y, x] = 0 else: arr[y, x] = 255 img = Image.fromarray(arr) img.show() img.save('greyscale.jpg')
输出
从图像创建 numpy 数组
您可以将 PIL 图像转换为 numpy 数组,反之亦然。下面给出了一个演示相同内容的小程序。
例子
#Import required libraries from PIL import Image from numpy import array #Open Image & create image object img = Image.open('beach1.jpg') #Show actual image img.show() #Convert an image to numpy array img2arr = array(img) #Print the array print(img2arr) #Convert numpy array back to image arr2im = Image.fromarray(img2arr) #Display image arr2im.show() #Save the image generated from an array arr2im.save("array2Image.jpg")
输出
如果将上述程序保存为Example.py并执行 -
它显示原始图像。
显示从中检索到的数组。
将数组转换回图像并显示它。
由于我们使用了 show() 方法,因此图像将使用默认的 PNG 显示实用程序来显示,如下所示。
[[[ 0 101 120] [ 3 108 127] [ 1 107 123] ... ... [[ 38 59 60] [ 37 58 59] [ 36 57 58] ... [ 74 65 60] [ 59 48 42] [ 66 53 47]] [[ 40 61 62] [ 38 59 60] [ 37 58 59] ... [ 75 66 61] [ 72 61 55] [ 61 48 42]] [[ 40 61 62] [ 34 55 56] [ 38 59 60] ... [ 82 73 68] [ 72 61 55] [ 63 52 46]]]
原始图像
从数组构建的图像