处理数据和标签时,生成了很多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)
处理前:
处理后: