.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 = vert("RGB") # 转换为RGB
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 = size((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 = vert("RGB")
image.save(image_path) # 顶替灰度图位置
return image
if __name__ =="__main__":
resizedimage = Image.open("./timg.png")
new_image = process_image_channels(image,"./time.png") print(de)
参考链接:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论