.npy文件转为指定像素的灰度图/RGB图png

前言

本文以转化《quick draw》数据集为例,介绍如何将.npy转为灰度图(或RGB图)。因为本人要使用easydl训练数据,所以必须把该数据集由28 * 28像素转化为30 * 30像素及以上。

python代码

import matplotlib.pyplot as plt
import numpy as np
import scipy.misc
import os
from PIL import Image

file_dir = "E:/inputplace/"  # npy文件路径
dest_dir = "E:/outputplace/"  # 图片文件存储的路径


def npy_png(file_dir, dest_dir):
    file = file_dir + 'bird.npy'  # .npy文件名
    con_arr = np.load(file)
    count = 0  # 序号,用作设置文件名
    for con in con_arr:
        arr=con
        # print(array.shape)  # 查看数据集size
        # 本人使用的数据集存储长为784的矩阵,即数据集图片为28*28像素
        arr = np.reshape(arr, (28, 28))  
        # 括号内数值根据相应的数据集或需求修改
        im = Image.fromarray(arr)
        im = im.convert('L')  # 转为灰度图

        resized_image = im.resize((40, 40), Image.ANTIALIAS)  
        # 修改像素值为40*40
        resized_image.save(dest_dir + "_" + '{:06d}'.format(count) + ".png")  
        # 设定图片文件名为6位,如_000100.png
        '''
        path=dest_dir + "_" + '{:06d}'.format(count) + ".png"
        image = Image.open(path)
        image = image.convert("RGB") # 转换为RGB
        os.remove(path)
        image.save(path) # RGB图片替换此灰度图
        '''
        count = count + 1

if __name__ == "__main__":
    npy_png(file_dir, dest_dir)

注释内为灰度图更进一步转为三通道RGB图的方法

仅修改图片像素值

from PIL import Image
def produceImage(file_in, width, height, file_out):
    image = Image.open(file_in)
    resized_image = image.resize((width, height), Image.ANTIALIAS)
    resized_image.save(file_out)
 
if __name__ == '__main__':
    file_in = 'E:/data/from.jpg'  # 原图位置
    width = 40
    height = 40  #要转化的像素值,自由设置
    file_out = 'E:/data/to.jpg'  # 转化后
    produceImage(file_in, width, height, file_out)

仅转化灰度图为3通道RGB图

from PIL import Image
# 通道转换
def change_image_channels(image, image_path):
    image = image.convert("RGB")
    os.remove(image_path)
    image.save(image_path) # 顶替灰度图位置
    return image
 
if __name__ == "__main__":
    image = Image.open("./timg.png")
    new_image = process_image_channels(image, "./time.png")
    print(new_image.mode)

参考链接:
基于Python改变图片像素大小
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩

你可能感兴趣的:(python)