一、from PIL import Image
open( ) 函数用于打开一个文件,然后返回结果就是这个文件对应的Image对象
image = Image.open('D:\img_1.png')
resize( ) 这个方法就是对图像进行缩放,将原本大小的图片缩放为只有28*28个像素点的图像
image = image.resize((28, 28))
show( ) 这个方法,故名思义就是展示图片,现在展示出来的就是只有28*28个像素点的图片
image.show()
save( ) 这个方法,是用来保存图片的,而且保存的格式由参数的后缀决定,可以通过这个方法将png文件保存为jpg,或者反过来。
image.save("123.jpg")
convert( ) 这个方法,用于改变图像的存储模式。存储模式共有9种,分别是1,L,P,RGBB,RGBA,CMYK,YCbCr,I,F。
image = Image.open('D:\img_1.png',"r").convert("RGB")
image = image.convert("L")
其中" 1 "是一位像素模式,表示这个像素点是黑还是白。
"L" 是八位像素,表示一个像素点的灰度。
"RGB" 是为真色彩模式, 可组合为 256 x 256 x256 种,是比较常见的图片存储模式。
其余的比较少见,不再赘述,想仔细看的查看下面文章:
二、import numpy as np
Image 类型可以通过函数直接转换为numpy数组,但我们要注意不同模式的Image对象转换而成的数组维度是不一样的,"L"模式下,转换为的是二维数组,"RGB"模式下,转换为的是三维数组。
img = np.array(image)
Numpy的concatenate( ) 函数是用于将两个或多个数组沿指定轴连接在一起的函数。
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = np.concatenate((arr1, arr2))
#等同于result = np.concatenate((arr1, arr2),axis=0)
print(result)
#结果就是:
#[1 2 3 4 5 6]
numpy.concatenate((a1, a2, ...), axis=0) 其中a1, a2, … 是参与连接操作的数组。axis 是连接的轴,如果不提供该参数,将默认为0,即沿着第一个轴进行连接。
再举个栗子:在列方向上连接两个数组
arr1 = np.array([[1, 2, 3], [7, 8, 9]])
arr2 = np.array([[4, 5, 6], [10, 11, 12]])
result = np.concatenate((arr1, arr2), axis=1)
print(result)
# 结果就是:
# [[ 1 2 3 4 5 6]
# [ 7 8 9 10 11 12]]
但必须注意,当axis=1(在列之间进行连接)时,必须保证连接的不同数组之间的每列的行数数目相同才能够进行连接。当axis=0(在行之间进行连接)时,必须保证连接的不同数组之间的每行的列数相同才能够进行连接。