У меня есть набор из 10 2D-изображений, которые я хочу соединить, чтобы создать 3D-изображение. Эти изображения генерируются с помощью matplotlib, поэтому они могут иметь формат .png или .tif. В приведенном ниже примере кода у меня есть функцияplot_data(), которая использует gen_random_data() для получения линии и построения набора из 10 2D-изображений, где цвет градиента основан на viridis()< /код> cmap. Я использовал meshlib.mrmeshpy для объединения этих изображений и получения 3D-графика, но это 3D-изображение не имеет цветокоррекции. Может ли кто-нибудь помочь мне реализовать цвет, который у меня есть? Если есть другой пакет, кроме meshlib.mrmeshpy, который может это сделать, сообщите мне.
У меня есть такой код:
import cv2
import meshlib.mrmeshpy as mr
import vtk
import matplotlib.pyplot as plt
import numpy as np
import os
def gen_random_data():
# Generate random data
np.random.seed(42)
x = np.random.rand(100, 100)
y = 2 * x + 5
# z = np.random.rand(100, 100)
return x, y
def plot_data(n=10):
for i in range(n):
# Generate random data
x, y = gen_random_data()
# Plot the data
plt.scatter(x, y, c=y)
plt.viridis()
plt.savefig('scatter_plots/scatter_plot_{}.tif'.format(i))
plt.show()
def make_stack(tif_path):
settings = mr.LoadingTiffSettings()
# load images from specified directory
settings.dir = tif_path
# specifiy size of 3D image element
settings.voxelSize = mr.Vector3f(1, 1, 5)
#create voxel object from the series of images
volume = mr.loadTiffDir(settings)
#define ISO value to build surface
iso = 100.0 #127.0
#convert voxel object to mesh
mesh = mr.gridToMesh(volume, iso)
#save mesh to .stl file
mr.saveMesh(mesh, mr.Path(tif_path + '/' + '3d_image_stack.stl'))
def view_stack(tif_path):
# visualize the file:
reader = vtk.vtkSTLReader()
reader.SetFileName(tif_path + '/' + '3d_image_stack.stl')
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(reader.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.SetBackground(1, 1, 1)
render_window = vtk.vtkRenderWindow()
render_window.AddRenderer(renderer)
render_window.SetSize(800, 800)
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(render_window)
interactor.Initialize()
interactor.Start()
def main():
# Plot and provide path to TIF images
plot_data(10)
TIF_PATH = r'scatter_plots'
make_stack(TIF_PATH)
view_stack(TIF_PATH)
if __name__ == '__main__':
main()
Этот код сгенерирует изображения и создаст трехмерный график. Я пробовал играть со значением ISO, но это не влияет на цвет.
У меня есть набор из 10 2D-изображений, которые я хочу соединить, чтобы создать 3D-изображение. Эти изображения генерируются с помощью matplotlib, поэтому они могут иметь формат .png или .tif. В приведенном ниже примере кода у меня есть функцияplot_data(), которая использует gen_random_data() для получения линии и построения набора из 10 2D-изображений, где цвет градиента основан на viridis()< /код> cmap. Я использовал meshlib.mrmeshpy для объединения этих изображений и получения 3D-графика, но это 3D-изображение не имеет цветокоррекции. Может ли кто-нибудь помочь мне реализовать цвет, который у меня есть? Если есть другой пакет, кроме meshlib.mrmeshpy, который может это сделать, сообщите мне. У меня есть такой код: [code]import cv2 import meshlib.mrmeshpy as mr import vtk import matplotlib.pyplot as plt import numpy as np import os
def gen_random_data(): # Generate random data np.random.seed(42) x = np.random.rand(100, 100) y = 2 * x + 5 # z = np.random.rand(100, 100) return x, y
def plot_data(n=10): for i in range(n): # Generate random data x, y = gen_random_data() # Plot the data plt.scatter(x, y, c=y) plt.viridis() plt.savefig('scatter_plots/scatter_plot_{}.tif'.format(i)) plt.show()
def make_stack(tif_path):
settings = mr.LoadingTiffSettings()
# load images from specified directory settings.dir = tif_path
# specifiy size of 3D image element settings.voxelSize = mr.Vector3f(1, 1, 5)
#create voxel object from the series of images volume = mr.loadTiffDir(settings)
#define ISO value to build surface iso = 100.0 #127.0
#convert voxel object to mesh mesh = mr.gridToMesh(volume, iso)
def main(): # Plot and provide path to TIF images plot_data(10) TIF_PATH = r'scatter_plots'
make_stack(TIF_PATH) view_stack(TIF_PATH)
if __name__ == '__main__': main() [/code] Этот код сгенерирует изображения и создаст трехмерный график. Я пробовал играть со значением ISO, но это не влияет на цвет.
У меня есть набор из 10 2D-изображений, которые я хочу соединить, чтобы создать 3D-изображение. Эти изображения генерируются с помощью matplotlib, поэтому они могут иметь формат .png или .tif. В приведенном ниже примере кода у меня есть...
Я хочу нарисовать прямоугольник, с градиентным цветом, заполненным слева направо, в произвольном положении с произвольными размерами в случае моих осей ( ax1 ) система координат.
Моя первая мысль заключалась в создании патча пути и каким -то...
Где -то включить в наш сервисный работник, по -видимому, доступ к окну. Но на выводе отладки я просто вижу ссылку на то, что кажется - случайным, не связанным кодом. Есть ли способ получить точный Callstack, чтобы увидеть, где доступ к объекту...