循环读取多个不同文件夹里的npy文件,转成png图片形式,并分类保存

处理数据和标签时,生成了很多npy文件。现在需要把它们转成png图片形式,方便查看:

1.读取一个npy文件

import numpy as np
import cv2

file_dir = r"D:\data\dataset\mask\subset0\1.3.6.1.4.1.14519.5.2.1.6279.6001.108197895896446896160048741492.npy"  # npy文件路径
dest_dir = r"D:\data\dataset\mask\jpg_img\1"  # 文件存储的路径

def npy_png(file_dir, dest_dir):
    con_arr = np.load(file_dir)
    count = 0
    for con in con_arr:
        arr = con * 255  # 将数组值乘以255用于图像像素值的转换
        cv2.imwrite(os.path.join(dest_dir, "{}_{}.png".format(os.path.basename(file_dir).replace('.npy', ''), count)), arr)  # 保存图像文件
        count += 1

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

2.读取一个文件夹里的npy

import os
import numpy as np
import cv2

def npy_png_folder(input_folder, output_folder):
    # 获取输入文件夹中所有以.npy结尾的文件列表
    npy_files = [f for f in os.listdir(input_folder) if f.endswith('.npy')]

    # 遍历每个.npy文件
    for file in npy_files:
        # 构建.npy文件的完整路径
        file_path = os.path.join(input_folder, file)

        # 加载.npy文件中的数据到数组 con_arr 中
        con_arr = np.load(file_path)

        # 初始化计数器
        count = 0

        # 遍历加载的数据数组中的每个元素
        for con in con_arr:
            # 将当前元素乘以255,用于图像像素值的转换
            arr = con * 255

            # 构建输出文件的路径
            output_file = os.path.join(output_folder, file.replace('.npy', '') + '_' + str(count) + '.png')

            # 将处理后的数据保存为.png文件
            cv2.imwrite(output_file, arr)

            # 计数器自增,用于生成不同的文件名
            count += 1

# 指定输入文件夹和输出文件夹路径
input_folder_path = r"D:\data\dataset\mask\subset0"
output_folder_path = r"D:\data\dataset\read_npy_mask\subset0"

# 调用函数进行转换
npy_png_folder(input_folder_path, output_folder_path)

3.读取多个文件夹里的npy

import os  
import cv2  
import numpy as np  

# 定义函数,将.npy文件转换为.png文件并保存
def npy_png_multiple_folders(input_folders, output_folder):
    for folder in input_folders:
        # 获取文件夹中以.npy结尾的文件列表
        npy_files = [f for f in os.listdir(folder) if f.endswith('.npy')]

        for file in npy_files:
            # 构建.npy文件的完整路径
            file_path = os.path.join(folder, file)
            # 加载.npy文件的内容
            con_arr = np.load(file_path)
            # 计数器,用于生成图像文件名
            count = 0

            # 创建输出子文件夹路径,以当前文件夹名称命名
            output_subfolder = os.path.join(output_folder, os.path.basename(folder))
            # 确保输出子文件夹存在,如果不存在则创建
            os.makedirs(output_subfolder, exist_ok=True)

            # 创建以.npy文件名命名的子文件夹
            file_folder = os.path.join(output_subfolder, os.path.splitext(file)[0])
            # 确保以.npy文件名命名的子文件夹存在,如果不存在则创建
            os.makedirs(file_folder, exist_ok=True)

            # 遍历.npy文件中的内容
            for con in con_arr:
                # 将内容乘以255,将范围缩放到0-255之间
                arr = con * 255
                # 构建图像文件的完整路径,使用计数器作为文件名
                output_file = os.path.join(file_folder, str(count) + '.png')
                # 将数组保存为图像文件
                cv2.imwrite(output_file, arr)
                # 更新计数器
                count += 1

# 指定输入文件夹列表和输出文件夹路径
input_folders = [r'D:\data\dataset\mask\subset0',
                 r'D:\data\dataset\mask\subset1']
output_folder_path = r'D:\data\dataset\read_npy_mask'

# 调用函数,实现.np y到.png的转换并保存
npy_png_multiple_folders(input_folders, output_folder_path)

处理前:
在这里插入图片描述
处理后:
在这里插入图片描述

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值