首页 > 解决方案 > 如何使用 pydicom.read_file() 和 cv2.imread() 一次读取多个 DICOM 和 PNG 文件?

问题描述

目前正在研究用于 MR 图像中肾脏分割的完全 CNN。有 40 张图像及其地面实况标签,尝试加载所有图像以进行预处理。

使用安装了最新版本的 pydicom 和 pip 的 Google Colab 进行此项目。目前已将 Google Drive 安装到 Colab 程序,下面的代码分别显示了 pydicom.read_file() 和 cv2.imread() 调用中图像及其掩码的正确路径。

但是,当我使用“/../IMG*.dcm”或“/../IMG*.png”文件路径(应该是合法的?)时,我会收到如下所列的“FileNotFoundError”。但是,当我指定特定的 .dcm 或 .png 图像时, pydicom.read_file() 和 cv2.imread() 调用函数非常正常。

有关如何解决此问题的任何建议?我在加载数据和预处理方面遇到了很多困难,但是一旦克服了这些初步障碍,就可以准备好模型架构。


 #import data as data
    import pydicom
    import numpy as np
    images= pydicom.read_file("/content/drive/My Drive/CHOAS_Kidney_Labels/Training_Images/T1DUAL/IMG*.dcm");
    numpyArray = images.pixel_array
    masks= cv2.imread("/content/drive/My Drive/CHOAS_Kidney_Labels/Ground_Truth_Training/T1DUAL/IMG*.png");

-----> FileNotFoundError:[Errno 2] 没有这样的文件或目录:'/content/drive/My Drive/CHOAS_Kidney_Labels/Training_Images/T1DUAL/IMG*.dcm'

标签: pngcv2pydicom

解决方案


pydicom.read_file不支持通配符。您必须自己遍历文件,例如(未经测试):

import glob
import pydicom

pixel_data = []
paths = glob.glob("/content/drive/My Drive/CHOAS_Kidney_Labels/Training_Images/T1DUAL/IMG*.dcm")
for path in paths:
    dataset = pydicom.dcmread(path)
    pixel_data.append(dataset.pixel_array)

推荐阅读