python : npy格式转png格式(源码)

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)
    

猜你喜欢

转载自blog.csdn.net/qq_43225437/article/details/86589892
今日推荐