当前位置:   article > 正文

【Python影像组学】医疗图像格式转换—nrrd格式转为png格式_cv2能读取nrrd格式吗

cv2能读取nrrd格式吗

首先需要导入必要的库,如果没有需要安装一下

安装方法:(可以直接在控制台输入以下命令进行安装)
pip install numpy
pip install pynrrd
pip install opencv-python
pip install opencv-contrib-python

import numpy as np
import nrrd
import os
import cv2

# nrrd_filename:读入的nrrd文件路径
# save_path:转换后的png保存路径
# patient_id:病人编号,如果没有将这个参数删去
# 如果删去patient_id参数,则函数中也要删掉这个参数
def nrrd_to_png(nrrd_filename, save_path, patient_id):
    nrrd_filename = nrrd_filename
    nrrd_data, nrrd_options = nrrd.read(nrrd_filename)
    h, w, slides_num = nrrd_data.shape
    for i in range(slides_num):
        img = nrrd_data[:, :, slides_num - i - 1] * 255
        # img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        cv2.imwrite(save_path + '/' + patient_id + '_' + str(i + 1) + '.png', img)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

通过nrrd.read操作读取图像,返回值中的nrrd_data是一个numpy数组,形状是[h,w,slide_num],然后使用opencv保存一下就行了。保存以后mask出现了形状和3dslicer显示不一样,所以对数组做一下转置,就可以得到正确的图像了。

# path:上边图像的保存路径
def rotation(path):
    image = cv2.imread(path)
    image = cv2.transpose(image)
    # image = cv2.flip(image,1)
    cv2.imwrite(path, image)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

具体调用过程如下:

nrrd_filename = "1_label.nrrd"  # nrrd 文件的保存路径
save_path = "D:/"  # 图片数据的保存文件夹
nrrd_to_png(nrrd_filename, save_path, "1")
rotation(save_path + "/1.png")  # 这个是最终保存的图像
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/520687
推荐阅读
相关标签
  

闽ICP备14008679号