python:npy格式转png格式
源码 GitHub
1、当npy文件中只有一张图片的矩阵
代码如下:
import os
import matplotlib.pyplot as plt
import numpy as np
import scipy.misc
output_directory = os.path.dirname('name.npy') # 提取文件的路径
output_name = os.path.splitext(os.path.basename("name.npy"))[0] # 提取文件名
arr = np.load('~/name.npy') # 提取 npy 文件中的数组
disp_to_img = scipy.misc.imresize( arr , [375, 1242]) # 根据 需要的尺寸进行修改
plt.imsave(os.path.join(output_directory, "{}_disp.png".format(output_name)), disp_to_img, cmap='plasma') # 定义命名规则,保存图片
2、当npy中存在多张图片的矩阵时:
整体思路: 单张图片的 .npy 大小维度为 (256,512)而现有的 .npy 文件的维度是 (200,256,512)。我们不难推出,这个文件中存在200张图片。
所以我们使用 X[ i , : , :] 函数,提取出内部的第 i 个(256,512),此后,就变成了单张的( .npy to .png)的问题。
具体的维度我们需要根据本地npy的文件决定,我们可以用下面的代码测量npy文件的大小
import numpy as np
arr = np.load('~/name.npy') # npy文件的路径
print(arr.shape) # 输出 .npy 文件的大小
# print(arr) # 直接输出 .npy 文件
我的数据是,本地npy文件的三维矩阵大小为[200,256,512],单张图片的npy大小为[256,512],转成png格式的水平尺寸375,垂直尺寸1242.具体实现代码如下
import matplotlib.pyplot as plt
import numpy as np
import scipy.misc
import os
file_dir = "~/" # npy文件路径
dest_dir = "~/" # 文件存储的路径
def npy_png(file_dir, dest_dir):
# 如果不存在对应文件,则创建对应文件
if not os.path.exists(file_dir):
os.makedirs(file_dir)
if not os.path.exists(dest_dir):
os.makedirs(dest_dir)
file = file_dir + 'name.npy' # npy文件
con_arr = np.load(file) # 读取npy文件
for i in range(0, 200): # 循环数组 最大值为图片张数(我的是200张) 三维数组分别是:图片张数 水平尺寸 垂直尺寸
arr = con_arr[i, :, :] # 获得第i张的单一数组
disp_to_img = scipy.misc.imresize(arr, [375, 1242]) # 根据需要的尺寸进行修改
plt.imsave(os.path.join(dest_dir, "{}_disp.png".format(i)), disp_to_img, cmap='plasma') # 定义命名规则,保存图片为彩色模式
print('photo {} finished'.format(i))
if __name__ == "__main__":
npy_png(file_dir, dest_dir)