临时有了任务,以后可能没有什么时间刷leetcode了。
第一次就是dicom格式的文件,搞了好半天。
用pydicom处理总是出错,读不出来像素信息,弄了一个小时。
然后就用了SimpleITK。好不容易打开了,数据显示出来发现总是有问题,就是颜色不正常。
然后应matlab的打开dicom的函数打开一下才发现问题。读出来是int16。matlab显示要imshow(a,【】),不过以前一直不知道这个[]是干什么用的,正好查了一下,其实就是归一化。
然后在python里给他归一化转化成float一下就OK了。
从8点弄到12点,这么简单的问题,蠢哭了。
import SimpleITK as sitk
import numpy as np
import SimpleITK as sitk
import os
import cv2
path = 'C:\\Users\\Administrator\\Desktop\\IM-0001-0001.dcm'
image = sitk.ReadImage(path)
image_array = sitk.GetArrayFromImage(image) # z, y, x
image_array=image_array.reshape((512,512))/(np.max(image_array)-np.min(image_array))
print(np.dtype(image_array[0][0]))
cv2.imshow('1',image_array)
cv2.waitKey(0)