2

当我在 python3.6 中使用 pydicom 时,有一些问题:

import pydicom
import matplotlib.pyplot as plt
import os
import pylab

filePath = "/Users/zhuangrui/Documents/Python/Dicom/dicoms/zhang_bo/0001.dcm"
dataSet_1 = pydicom.dcmread(filePath)
plt.imshow(dataSet_1.pixel_array)
plt.show()

这是问题所在:

这个问题怎么解决?非常感谢!</p>

4

3 回答 3

7

在对上面建议的链接进行一些研究之后,我遇到了同样的问题。我设法通过更新到最新的 pydicom 模块“1.2.0”并安装 gdcm 来解决它。您可以使用更新 pydicom pip install -U git+https://github.com/pydicom/pydicom.git

你可以在这里找到最新的 gdcm ,这个链接解释了安装。


我使用anaconda,安装gdcm包并解决问题更容易。如果您使用 anaconda,只需从您的环境中输入: conda install pydicom --channel conda-forge获取 pydicom 的最新和

conda install -c conda-forge gdcm

得到gdcm。这解决了问题。希望这些会有所帮助。

于 2018-09-07T22:28:37.723 回答
0

使用 pydicom,您还需要安装适当的图像处理程序来处理压缩图像类型。

对于 JPEG 无损,理论上以下应该可以工作:jpeg_ls、gdcm 或带有 jpeg 插件的 Pillow。所有这些都需要安装 Numpy。请参阅https://github.com/pydicom/pydicom/issues/532上的讨论。

还有一个正在进行的拉取请求,以添加更多描述性错误消息,以说明不同图像需要哪些图像处理程序。

于 2018-06-08T10:47:23.480 回答
0

问题:

我试图阅读带有 .dcm 扩展名的医学图像。但是在 Windows 和 Ubuntu 上都出现了错误。我找到了一种适用于两种机器的解决方案。

我在 Ubuntu 上遇到的错误是: NotImplementedError: this transfer syntax JPEG 2000 Image Compression (Lossless Only), can not be read because Pillow 缺少 jpeg 2000 解码器插件

(注意对于 Windows,我遇到了一个不同的错误,但我确信这是因为相同的问题,即 Pillow 不支持 JPEG 2000 格式)

平台信息:

  1. 我正在使用:Python 3.6、Anaconda 和 Ubuntu,15 GB RAM

内存很重要:

我应用的方案和上面阿里解释的一样。但我想添加此安装可能需要时间(取决于您使用的 RAM)。在 ubuntu 上,我在云平台上使用 15 GB RAM 花费的时间更少,而在 Windows 上,在本地机器上使用 4 GB RAM 花费了很多时间。

解决方案

  1. 蟒蛇是必要的。为什么? 请查看 pydicom 的官方文档(https://pydicom.github.io/pydicom/dev/getting_started.html),其中提到“要安装 pydicom 以及压缩像素数据的图像处理程序,我们鼓励您使用 Miniconda 或 Anaconda” (注意 Windows 我得到了一个不同的错误)

  2. 如果您使用的是 Ubuntu,请直接打开终端。如果您使用的是 Windows,则在 Anaconda Navigator 上从此处启动终端转到环境。在其上执行以下命令:

    pip install -U git+https://github.com/pydicom/pydicom.git

    conda install pydicom --channel conda-forge

    conda install -c conda-forge gdcm

交叉检查:

现在使用.dcm我们得到错误的文件。尝试在 Python 笔记本中使用以下代码

filename = 'FileName.dcm'
ds = pydicom.dcmread(filename)
plt.imshow(ds.pixel_array, cmap=plt.cm.bone) 

它应该打印输出。也试试这个代码:

ds.pixel_array

这将为您提供包含值的数组。

于 2019-03-08T11:47:08.590 回答