Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法获取用于在python中显示的dicom图像_Python_Image Processing_Dicom_Pydicom - Fatal编程技术网

无法获取用于在python中显示的dicom图像

无法获取用于在python中显示的dicom图像,python,image-processing,dicom,pydicom,Python,Image Processing,Dicom,Pydicom,我试图在opencv python中显示一个DICOM图像。我正在使用pydicom库,然后添加API,用DOTNET创建一个完整的DICOM查看器,它运行python(当然,C#使用进程实例调用python!!)。我无法转换或查看未压缩的DICOM图像。每当我尝试加载或修改像素数组时。我收到错误消息 import dicom import cv2 import numpy df=dicom.read_file("IM-0001-0002.dcm") df.pixel_array Traceb

我试图在opencv python中显示一个DICOM图像。我正在使用pydicom库,然后添加API,用DOTNET创建一个完整的DICOM查看器,它运行python(当然,C#使用进程实例调用python!!)。我无法转换或查看未压缩的DICOM图像。每当我尝试加载或修改像素数组时。我收到错误消息

import dicom
import cv2
import numpy
df=dicom.read_file("IM-0001-0002.dcm")
df.pixel_array

Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
df.pixel_array
File "C:\Python27\lib\site-packages\dicom\dataset.py", line 394, in pixel_array
return self._get_pixel_array()
File "C:\Python27\lib\site-packages\dicom\dataset.py", line 376, in _get_pixel_array
raise NotImplementedError("Pixel Data is compressed in a format pydicom does not yet          handle. Cannot return array")
NotImplementedError: Pixel Data is compressed in a format pydicom does not yet handle.        Cannot return array
导入dicom
进口cv2
进口numpy
df=dicom.read_文件(“IM-0001-0002.dcm”)
像素阵列
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
像素阵列
文件“C:\Python27\lib\site packages\dicom\dataset.py”,第394行,像素数组
返回self.\u获取\u像素\u数组()
文件“C:\Python27\lib\site packages\dicom\dataset.py”,第376行,在\u get\u pixel\u数组中
raise NOTEImplementedError(“像素数据以pydicom尚未处理的格式压缩。无法返回数组”)
NotImplementedError:像素数据以pydicom尚未处理的格式压缩。无法返回数组
请建议我转换图像的好方法,使cv2.imshow()函数显示图像


提前谢谢

由于pydicom不支持压缩的dicom文件,因此必须先对其进行解压缩。
您可以使用来完成此操作。

您可以先使用python GDCM绑定来解压缩文件,例如,请参见您之前必须在RGB中进行转换,请查看单色dicom文件:

#导入必要的软件包
从imutils导入等高线
进口西皮
从脱脂进口措施
导入numpy作为所需的np#数字库
将熊猫作为pd#导入datafrome
导入argparse#简单argparser
导入imutils
为opencv图像识别工具导入cv2#
进口dicom
filename=askopenfilename()
dicom_文件=dicom.read_文件(文件名)##原始dicom文件
####dicom单色-2文件的像素值介于-2000和+2000之间,opencv不能使用它#####
####在第一步中,我们将这些像素值转换为(R,G,B)
###要在RGB中显示灰色,只需为R、G和B提供相同的值,
####(0,0,0)将为黑色,(255255)将为白色,
##应使用适当的像素分布四分位函数对这三个参数进行自动化
black_threeshold=0 35;###低于0的像素值将为黑色,
white_threeshold=1400####高于1400的像素值将为白色
wt=白色或三色
bt=黑色
######函数将dicom转换为RGB以使用opencv,
##需要大力改进,因为运行需要很多时间,
##线性过程应替换为自适应加权arctan或自适应样条插值。
def DicomtoRGB(dicomfile、bt、wt):
“”“创建用RGB中的特定颜色填充的新图像(numpy数组)”
#创建黑色空白图像
image=np.zeros((dicomfile.Rows,dicomfile.Columns,3),np.uint8)
#图像高度和宽度上的循环
i=0
j=0
而iTry pydicom
出现错误的一个原因可能是:使用的.dcm文件可能包含不受支持的格式(例如,对于pydicom,pillow不支持JPEG 2000)。这个问题是可以解决的。我也遇到了同样的问题(我使用的是pydicom而不是dicom),我想你会从解决我问题的解决方案中得到一些指导:

第一平台信息: 我正在使用:pydicom读取.dcm文件,python3.6,Anaconda和Ubuntu,15gbram

解决方案:
  • 使用以下命令安装pydicompip Install-U pydicom
  • 信息可在此处找到:(链接:)

  • 水蟒是必需的。为什么? 请查看pydicom()的官方文档,其中提到“要安装pydicom以及压缩像素数据的图像处理程序,我们鼓励您使用Miniconda或Anaconda”

  • 如果您使用的是Ubuntu,请直接打开终端。如果您使用的是Windows,那么在Anaconda Navigator上,从这里转到环境,从终端开始。对其执行以下命令:

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

    conda安装pydicom——频道conda forge

    conda安装-c conda forge gdcm

  • 交叉核对: 现在重新启动笔记本,然后尝试使用pydicom执行代码。它将显示输出

    此外,还可以使用Matplotlib按如下方式显示:

    import matplotlib.pyplot as plt
    import pydicom
    filename = 'IM-0001-0002.dcm'
    ds = pydicom.dcmread(filename)
    plt.imshow(ds.pixel_array, cmap=plt.cm.bone)
    

    我希望这能对你有所帮助。

    这个答案毫无意义。第一行
    dicom_file=dicom.read_file(filename)##原始dicom文件
    将给出OP发布的相同错误。
    import matplotlib.pyplot as plt
    import pydicom
    filename = 'IM-0001-0002.dcm'
    ds = pydicom.dcmread(filename)
    plt.imshow(ds.pixel_array, cmap=plt.cm.bone)