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

如何直接向MONAI transforms传入图像以避免类型错误?

解决Monai变换直接处理numpy数组的报错问题

问题根源是你用的LoadImaged变换是专门用来从文件路径加载图像的,现在直接传numpy数组自然会报类型错误。要解决这个问题,只需要调整变换链,去掉加载路径的步骤,换成适配numpy数组的处理逻辑:

修改步骤

  1. 移除LoadImaged变换:既然已经拿到numpy格式的图像,不需要再从路径加载,直接删掉这个步骤。
  2. 调整EnsureChannelFirstd的参数(可选但建议):根据你的numpy数组维度来设置channel_dim参数,确保通道维度在最前面:
    • 如果是单通道灰度图,数组维度是(H, W),设置channel_dim=None,会自动添加通道维度变成(1, H, W)
    • 如果是RGB图,数组维度是(H, W, 3),设置channel_dim=-1,把最后一维的通道移到最前面变成(3, H, W)
  3. 保留后续的变换逻辑:ScaleIntensityd、Resized这些处理图像的变换可以直接复用,因为它们支持处理numpy数组或tensor。

修改后的完整代码

import os
import numpy as np
import torch 

import torchvision.models as models
import torch.nn as nn

from PIL import Image
import tempfile
from monai.transforms import (
    EnsureChannelFirstd,
    Resized, EnsureTyped, Compose,  
    ToTensord,
    ScaleIntensityd,
    CenterSpatialCropd,
)
from monai.config import print_config
print_config()

# 调整后的变换链,去掉LoadImaged,按需设置EnsureChannelFirstd的channel_dim
test_transforms = Compose(
    [
        # 替换LoadImaged,直接处理numpy数组
        EnsureChannelFirstd(keys=["image1","image2"], channel_dim=None), # 根据你的数组维度调整channel_dim
        EnsureTyped(keys=["image1","image2"]), # 将numpy数组转为Monai支持的类型,也可以指定type='tensor'直接转tensor
        ScaleIntensityd(keys=["image1","image2"], minv=0.0, maxv=1.0),
        Resized(
            keys=["image1","image2"],
            spatial_size=(512,512),
        ),
        CenterSpatialCropd(keys=["image1","image2"],
                         roi_size=(448,448), 
                        ),          
        ToTensord(keys=["image1", "image2"]), # 如果EnsureTyped已经转成tensor,这一步可以省略
    ]
)

def sgmt(r_img, l_img):
    test_Data =[
        {
            "image1": r_img,
            "image2": l_img    
        }
    ]
    img = test_transforms(test_Data[0])

额外说明

  • 如果你的numpy数组已经是(C, H, W)的通道在前格式,可以直接去掉EnsureChannelFirstd变换
  • EnsureTyped默认会把numpy数组转成numpy.ndarray类型,如果想直接转成tensor,可以设置EnsureTyped(keys=["image1","image2"], type='tensor'),这样后面的ToTensord就可以删掉了

内容的提问来源于stack exchange,提问作者Juan Yoo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:20:26