一、怎么用数据表示图像?
首先,要对一张图像进行压缩处理,那么应该知道怎么用数据来表示一张具体的图像。
我们选择用Python中的第三方工具库的Pillow来读取一张样例照片,观察参数信息。
以下是一张lenna.jpg
需要提前安装第三方库pillow
pip install pillow
安装好之后,将图片放在源文件所在路径下,我们先来读取一下图片信息:
import numpy as np from PIL import Image originalImage = Image.open(r'lenna.jpg', 'r') imageArray = np.array(originalImage) print(imageArray.shape) print(imageArray)
(600, 601, 3) [[[186 102 68] [191 107 73] [190 106 72] ... [ 49 35 35] [ 54 40 40] [ 53 39 39]] [[192 108 74] [191 107 73] [191 107 73] ... [ 54 40 40] [ 50 36 36] [ 49 35 35]] [[192 108 74] [190 106 72] [190 106 72] ... [ 52 38 37] [ 52 38 37] [ 50 36 35]] ... [[237 199 186] [237 199 186] [239 201 190] ... [168 106 93] [166 104 91] [169 105 93]] [[242 204 191] [241 203 190] [241 201 191] ... [170 108 95] [178 116 103] [174 110 98]] [[237 199 186] [240 202 189] [242 202 192] ... [161 99 86] [171 109 96] [170 106 94]]] Process finished with exit code 0
我们从结果可以看到,这张图被表示为一个三维的ndarray数组对象:imageArray。
数组的维度是 600 x 601 x 3 。我们称为3D张量。这个3D张量由图片的三个维度信息组成,
分别为:高度信息、宽度信息、颜色通道信息。
程序的结果可以看出:这张图片是高度X宽度为600 x 60