问题描述
我正在尝试读取一些DICOM文件,并将它们转换为numpy数组。但是当我去存储图像的原始数据时,会发生此错误:
回溯(最近通话最近): 文件“ C:/Users/Matheus/PycharmProjects/mesTrado/AreaDeInteresse/testando3.py”,第47行 d_array [:,:,dcms.index(dcm)] = np.array(b.pixel_array) ValueError:无法将输入数组从形状(256,256,3)广播到形状(256,256)
我的代码是对代码的重读: https://gist.github.com/somada141/8dd67a02e330a657cf9e
from tkinter import *
from PIL import ImageTk,Image
from os import listdir
from os.path import isfile,join
import cv2
import numpy as np
###################
import os
import pydicom as dicom
from matplotlib import pyplot as plt
#%matplotlib inline
import numpy as np
###################
drawing = False
point1 = ()
point2 = ()
image_axial=[]
image_sagital=[]
image_coronal=[]
root=Tk()
root.title('viewer das image')
root_dir = 'D:\\Tomografias UNIOESTE odontologia\\Neusa Maria Scionte Fermino\\IMGDATA'
dcms = []
for d,s,fl in os.walk(root_dir):
for fn in fl:
if ".dcm" in fn.lower():
dcms.append(os.path.join(d,fn))
print(dcms[0])
d = dicom.read_file(dcms[0])
print(d)
print(d.pixel_array.shape)
ref_dicom = dicom.read_file(dcms[0])
d_array = np.zeros((ref_dicom.Rows,ref_dicom.Columns,len(dcms)),dtype=ref_dicom.pixel_array.dtype)
######
######
for dcm in dcms:
b = dicom.read_file(dcm)
d_array[:,:,dcms.index(dcm)] = np.array(b.pixel_array)
for numero,image in enumerate(d_array):
print(numero)
image_axial.append(ImageTk.PhotoImage(Image.fromarray(d_array[numero,:])) )
image_sagital.append(ImageTk.PhotoImage(Image.fromarray(d_array[:,numero,:])))
if numero<len(dcms):
image_coronal.append(ImageTk.PhotoImage(Image.fromarray(d_array[:,numero])))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)