读取nii文件

Traceback (most recent call last):
  File "E:\PyCharm 2021.3.3\plugins\python\helpers\pydev\pydevd.py", line 1483, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "E:\PyCharm 2021.3.3\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "E:/deep_learn_code/myself_project/01Brain_seg/codev2.1.py", line 10, in <module>
    train_image,train_label = brainset.__getitem__(40)
  File "E:\deep_learn_code\myself_project\01Brain_seg\util\brain_dataset.py", line 26, in __getitem__
    image = self.transform(image)
  File "F:\other_ana\My_Pymic\lib\site-packages\torchvision\transforms\transforms.py", line 135, in __call__
    return F.to_tensor(pic)
  File "F:\other_ana\My_Pymic\lib\site-packages\torchvision\transforms\functional.py", line 137, in to_tensor
    raise TypeError(f"pic should be PIL Image or ndarray. Got {type(pic)}")
TypeError: pic should be PIL Image or ndarray. Got <class 'SimpleITK.SimpleITK.Image'>
python-BaseException

Process finished with exit code 1

解决方法:
因为 sitk.ReadImage(filename)读取的对象是image对象,需要进行转换。
sitk.GetArrayFromImage(img_obj)可以获取数据,nii文件还有空间信息等可以image的 GetOrigin(),GetSpacing(),GetDirection()方法获取。

TypeError: can't convert np.ndarray of type numpy.uint16. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.

解决方法:最简单是办变量除以1.0,原来变量就会变成浮点数
读取nii文件_第1张图片
现在image,label都是(768,26,768),目标形状为(26,768,768)
解决方法:

1 image.reshap(26,768,768) 开辟新的空间 消除内存

2 image.view() 不能用

3 image.permute() 推荐这个

你可能感兴趣的:(机器学习,python,开发语言)