无法获取用于在python中显示的dicom图像
我试图在opencv python中显示一个DICOM图像。我正在使用pydicom库,然后添加API,用DOTNET创建一个完整的DICOM查看器,它运行python(当然,C#使用进程实例调用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
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
信息可在此处找到:(链接:)
pip安装-U git+https://github.com/pydicom/pydicom.git
conda安装pydicom——频道conda forge
conda安装-c conda forge gdcm
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)