-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvtktest.py
76 lines (64 loc) · 2.1 KB
/
vtktest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import vtk
import numpy as np
from vtk.util import numpy_support,vtkImageImportFromArray
from vtkmodules.vtkCommonDataModel import vtkImageData
from vtkmodules.vtkFiltersCore import (
vtkFlyingEdges3D,
vtkMarchingCubes
)
from vtkmodules.vtkFiltersSources import vtkSphereSource
from vtkmodules.vtkIOImage import vtkDICOMImageReader
from vtkmodules.vtkImagingHybrid import vtkVoxelModeller
from vtkmodules.vtkRenderingCore import (
vtkActor,
vtkPolyDataMapper,
vtkRenderWindow,
vtkRenderWindowInteractor,
vtkRenderer
)
from vtkmodules.vtkCommonColor import vtkNamedColors
import vtkmodules.all as vtk
import cv2
# read video file
# Sample anonymized echocardiography data (replace with your actual data)
videofile="./Anonymized_EchoCardiography06.mp4"
print("Read",videofile)
video = cv2.VideoCapture(videofile)
anonframes=[]
print("video opened",video.isOpened())
while(video.isOpened()):
ret, frame = video.read()
if ret == True:
anonframe= cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
anonframes.append(anonframe)
else:
break
image_data=np.stack(anonframes)
# Create a VTK image importer
image_importer = vtkImageImportFromArray.vtkImageImportFromArray()
# Set the array data to the importer
image_importer.SetArray(image_data)
colors = vtkNamedColors()
# Update the importer
image_importer.Update()
#
surface = vtkMarchingCubes()
surface.SetInputData(image_importer.GetOutput())
surface.ComputeNormalsOn()
surface.SetValue(0,127)
renderer = vtkRenderer()
renderer.SetBackground(colors.GetColor3d('DarkSlateGray'))
render_window = vtkRenderWindow()
render_window.AddRenderer(renderer)
render_window.SetWindowName('MarchingCubes')
interactor = vtkRenderWindowInteractor()
interactor.SetRenderWindow(render_window)
mapper = vtkPolyDataMapper()
mapper.SetInputConnection(surface.GetOutputPort())
mapper.ScalarVisibilityOff()
actor = vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(colors.GetColor3d('MistyRose'))
renderer.AddActor(actor)
render_window.Render()
interactor.Start()