Код: Выделить всё
import imageio.v2 as imageio
import numpy as np
import matplotlib.pyplot as plt
import pyvista as pv
all = np.stack([
imageio.imread("dataset_{:02d}.tif".format(n)) > 100
for n in range(30) ], axis=0)
image3d = pv.Plotter(notebook=False)
image3d.add_mesh(...)
image3d.show([pv.VoxelData(pict).threshold("value", (0.5, 1.0))], wait=False)
pv.show([pv.VoxelData(pict).threshold("value", (0.5, 1.0))], wait=False)
Поскольку я не хочу возвращаться к прежней версии, я хочу сделать то же самое с новейшей версией Python. Вы знаете, как это сделать? Мне жаль, что я не смог найти в Интернете образцы последовательности изображений в формате tif, которые представляют собой фрагменты трехмерного изображения. (Я обнаружил, что большинство загружаемых рисунков представляют собой слишком много файлов.)
Я также попробовал другой код, используя пакет homcloud:
импортировать pyvista как pv
импортировать homcloud.pyvistahelper как pvhelper
pv.set_jupyter_backend('trame')
Код: Выделить всё
pl = pv.Plotter()
pl.add_mesh(pvhelper.Bitmap3D(pict).threshold(0.4),
show_scalar_bar=False, opacity=0.8)
Здесь я попробовал использовать простой код, как ниже, но и это не сработало.
Код: Выделить всё
import numpy as np
import plotly.graph_objects as go
data = np.random.rand(100, 100, 100)
x, y, z = np.indices(data.shape)
values = data.flatten()
mask = values > 0.5
x, y, z = x[mask], y[mask], z[mask]
fig = go.Figure(data=go.Scatter3d(
x=x,
y=y,
z=z,
mode='markers',
marker=dict(size=2, color='blue', opacity=0.5)
))
fig.update_layout(scene=dict(
xaxis_title='X-axis',
yaxis_title='Y-axis',
zaxis_title='Z-axis'
))
fig.show()
Подробнее здесь: https://stackoverflow.com/questions/792 ... -rotate-by