print('img_path', img_path[0])
img_img = load_itk(img_path[0]) # 正常读取,sitk.ReadImage(path)
# img_img = nibabel.load(img_path[0]).get_data()
img_array = sitk.GetArrayFromImage(img_img) # [channel, height, width,]
img_array_copy = sitk.GetArrayFromImage(img_img)
channel, height, width = img_array.shape # [channel, h, w]
for j in range(channel):
image = img_array[j]
image = cv2.resize(image, (480, 480)) # resize成网络训练的h*w
image_x = image
image_x = np.expand_dims(image_x, axis=-1)
image_x = np.expand_dims(image_x, axis=0) # 这两个是添加成[b, h ,w ,c]的维度
feed_dict = {
image_placeholder:image_x,
training_flag:False,
}
result, idx_map = sess.run([logits, seg_image], feed_dict=feed_dict)
# idx_map是输出的预测图[1, h, w] --上面为分类好的类别
print('idx_map.shape', np.unique(idx_map))
# [0 1 2 3] *200
output = idx_map * 200 ######## 这下面就是*像素
# print('outouyt.un', np.unique(output))
output_copy = output.copy()
# 将400 - 》 500
# print('outpyt_copy', np.unique(output_copy))
output[output_copy == 400] = 500
# 消除最后一维度
# 变回原来的大小
output = np.squeeze(output).astype(np.float32)
output = cv2.resize(output, (height, width)) ###### 将其resize成 图像的原题大小
output = np.expand_dims(output, axis=0)
# 装数据
img_array_copy[j, :, :] = output[0, :, :] ### 将其放在第j个切片上
ax[0, 1].imshow(image_x[0,:,:,0]) ###### 这是plt.show()
ax[1, 1].imshow(output[0, :, :])
plt.show()
plt.pause(0.5)
# 数据保存为nii格式
last_ouput = sitk.GetImageFromArray(img_array_copy) # 将array转成image
last_ouput.CopyInformation(img_img) # 将读取数据的信息copy给结果的数据
sitk.WriteImage(last_ouput, 'F:\image\competition\mysvaeee/patient'+str(i)+'.nii.gz') #保存为nii.gz
SimpleITK保存.nii.gz的文件
最新推荐文章于 2024-03-27 15:19:27 发布