Я пытаюсь загрузить и отобразить файлы DCM в Matplotlib, но не могу заставить его работать 'Вот код:'
def show_dicom_file(filename):
dataset = pydicom.dcmread(filename)
print("Filename.........:", filename)
print("Storage type.....:", dataset.SOPClassUID)
print()
if 'PixelData' in dataset:
rows = int(dataset.Rows)
cols = int(dataset.Columns)
print("\nrows:\n", rows)
print("\ncols:\n", cols)
print("Image size.......: {rows:d} x {cols:d}, {size:d} bytes".format(
rows=rows, cols=cols, size=len(dataset.PixelData)))
if 'PixelSpacing' in dataset:
print("Pixel spacing....:", dataset.PixelSpacing)
# use .get() if not sure the item exists, and want a default value if missing
print("Slice location...:", dataset.get('SliceLocation', "(missing)"))
# plot the image using matplotlib
plt.imshow(dataset.pixel_array, cmap=plt.cm.bone)
plt.show()
Когда я запускаю с предоставленным файлом в примере, это работает, но когда я пытаюсь с большими файлами dicom, это терпит неудачу. Вот вывод:
Filename.........: ./colon_ok_ordered/12 (1)
Series_002_PVAbdomen_8.0_B41s.dcm
Storage type. ....: 1.2.840.10008.5.1.4.1.. 1.7
rows:
512
cols:
512
Image size.......: 512 x 512, 42467328 bytes
Slice location...: (missing)
Traceback (most recent call last):
File "read_colon_dcoms5.py", line 60, in <module>
read_show_files()
File "read_colon_dcoms5.py", line 36, in read_show_files
show_dicom_file(filename)
File "read_colon_dcoms5.py", line 28, in show_dicom_file
plt.imshow(dataset.pixel_array, cmap=plt.cm.bone)
File "D:\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 2699, in imshow
None else {}), **kwargs)
File "D:\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1810, in inner
return func(ax, *args, **kwargs)
File "D:\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 5494, in imshow
im.set_data(X)
File "D:\Anaconda3\lib\site-packages\matplotlib\image.py", line 638, in set_data
raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data