python图像处理PIL实例之读取图片

python图像处理PIL实例之读取图片

"""
读取图片实例
"""
from PIL import Image
import numpy as np
import os
import pickle
# 读取图片的目录
img_dir1='./images/'
# 保存图片的目录
img_dir2='./storage/'
# 保存数组的文件
array_file ='./array.bin'
# 2.读取图片,将图片保存成大的一维数组,将数组保存到文件
def image_array_file():
    # 获取所有图片的名称
    imgnames=os.listdir(img_dir1)
    # 定义变量保存所有图片的数组
    img_array = np.array([])
    print(imgnames)
    for imgname in imgnames:
        # 读取图片
        img=Image.open(img_dir1+imgname)
        # 将每张图片进行通道分割
        r,g,b=img.split()
        print(r)
        # 将r g b转换为一维数组
        r_array=np.array(r).reshape(40000)
        g_array =np.array(g).reshape(40000)
        b_array =np.array(b).reshape(40000)
        # 将r_array,g_array,b_array拼接为一维数组
        arrs=np.concatenate((r_array,g_array,b_array))
        img_arrays=np.concatenate(arrs,img_array)
    # 将一维数组保存到文件
    with open(array_file,'wb') as f:
        pickle.dump(img_arrays,f)

# 读取文件内容,转换图片
def file_image():
    with open(array_file,'rb') as f:
        images=pickle.load(f)
        #一维数组存放9张图片,3个通道,尺寸:250,250
        ima_arr=images.reshape(9,3,250,250)
    for i in range(9):
        r=Image.fromarray(ima_arr[i][0].convert('L'))
        g=Image.fromarray(ima_arr[i][1].convert('L'))
        b=Image.fromarray(ima_arr[i][2].convert('L'))
    # 合并图片
    image=Image.merge('RGB',(r,g,b))
    image.save(img_dir2+'.png')
file_image()



你可能感兴趣的:(python,python)