Массив не повторяется, но как использовать в качестве аргумента в zip ()? - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу построить трехмерную визуализацию сканирования DICOM, но я застрял на этой ошибке.

Я использую метод марширующих кубов. Сначала из вершин и граней сетки и вернулся, затем перешел в plt_3d. Импортированные модули:

импорт numpy как np

импорт pydicom как pyd

импорт os

импорт matplotlib.pyplot как plt

изglob import glob

из mpl_toolkits.mplot3d.art3d import Poly3DCollection

import scipy.ndimage

из скиф-морфологии импорта

из показателя импорта скимаджа

из skimage.transform import resize

из sklearn.cluster import KMeans

из сюжета import версия

из plotly.offline import download_plotlyjs,init_notebook_mode, plot, iplot

из plotly.tools импортирует FigureFactory как FF

из plotly.graph_objs import *

init_notebook_mode (подключено = True)

imgs_after_resampявляется пиксельным массивом (3d), который содержит данные DICOM

def make_mesh(image, threshold=-300, step_size=1):
    p = image.transpose(2,1,0)
    verts, faces, norm, val = measure.marching_cubes_lewiner(p, threshold, 
step_size=step_size, allow_degenerate=True) 
    print(verts)
    return verts, faces
def plotly_3d(verts, faces):
    x,y,z = zip(*verts)
    fig = FF.create_trisurf(x=x,
                    y=y, 
                    z=z, 
                    plot_edges=False,
                    colormap=colormap,
                    simplices=faces,
                    backgroundcolor='rgb(64, 64, 64)',
                    title="Interactive Visualization")
    iplot(fig)
def plt_3d(verts, faces):

    print(“Drawing”)
    x,y,z = zip(*verts)
    fig = plt.figure(figsize=(10, 10))
    ax = fig.add_subplot(111, projection='3d')
    mesh = Poly3DCollection(verts[faces], linewidths=0.05, alpha=1)
    face_color = [1, 1, 0.9]
    mesh.set_facecolor(face_color)
    ax.add_collection3d(mesh)

    ax.set_xlim(0, max(x))
    ax.set_ylim(0, max(y))
    ax.set_zlim(0, max(z))
    ax.set_axis_bgcolor((0.7, 0.7, 0.7))
    plt.show()
v, f = make_mesh(imgs_after_resamp, 350)
new3d=np.vectorize(plt_3d)
new3d(v,f)

ValueError Traceback (последний последний вызов) в ----> 1 plot_ve (imgs_re, 400)

TypeError:аргумент типа type после * должен быть iterв состоянии, не numpy.float32

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...