You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将numpy格式图片转换为带对应标签命名的JPG图片并分类存储

实现方案

环境依赖

先安装需要的第三方库:

pip install numpy pillow

完整实现代码

import os
import numpy as np
from PIL import Image

# 1. 加载npy文件
images = np.load("images.npy")
labels = np.load("labels.npy")

# 2. 初始化根目录和标签计数器
root_dir = "images"
label_counter = {}

# 3. 遍历所有图片和对应标签
for img, label in zip(images, labels):
    # 处理标签字符串,确保是合法目录名
    label = str(label).strip()
    # 生成标签对应的子目录路径
    label_dir = os.path.join(root_dir, label)
    # 目录不存在就创建
    os.makedirs(label_dir, exist_ok=True)
    
    # 维护每个标签的图片计数,用于命名
    if label not in label_counter:
        label_counter[label] = 0
    label_counter[label] += 1
    
    # 处理图片像素:如果是归一化到0~1的浮点值,先转成0~255的uint8
    if img.dtype == np.float32 or img.dtype == np.float64:
        img = (img * 255).astype(np.uint8)
    
    # 转成PIL Image对象,单通道灰度图把mode改成'L'即可
    # 如果图片是CHW格式(通道在前),先转成HWC:img = np.transpose(img, (1,2,0))
    pil_img = Image.fromarray(img, mode="RGB")
    
    # 生成文件名和存储路径
    file_name = f"{label}{label_counter[label]}.jpg"
    save_path = os.path.join(label_dir, file_name)
    pil_img.save(save_path)

print(f"处理完成,共导出{len(images)}张图片")

常见适配调整

  • 如果你的图片是单通道灰度图,修改Image.fromarray的mode参数为'L'
  • 如果你的numpy数组存储格式是(样本数, 通道数, 高度, 宽度)的CHW格式,在转PIL前添加img = np.transpose(img, (1,2,0))调整维度顺序
  • 如果导出的图片颜色异常,检查通道顺序是不是BGR,如果是可以用img = img[..., ::-1]转成RGB格式

内容的提问来源于stack exchange,提问作者ethan meem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 03:18:02