Использование vtkResliceImageViewer или vtkImageViewer2 с Python3 + PyQt5 - PullRequest
0 голосов
/ 11 октября 2018

Я написал рабочий пример для vtkImageViewer:

Но ни одно изображение не отображается с помощью vtkImageViewer2 или vtkResliceImageViewer.Нашли пример, основанный на PyQt4 + Python2.7 , но также не удалось получить отрендеренные изображения (возможно, из-за неправильных версий библиотек).

Есть ли в Python примеры с этими классами?

import sys
import vtk
from PyQt5 import QtCore, QtGui
from PyQt5 import QtWidgets

from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent = None):
        QtWidgets.QMainWindow.__init__(self, parent)

        self.frame = QtWidgets.QFrame()
        self.vl = QtWidgets.QVBoxLayout()
        self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
        self.vl.addWidget(self.vtkWidget)

        pathDicomDir = "/path/to/dicom/data"
        reader = vtk.vtkDICOMImageReader()
        reader.SetDirectoryName(pathDicomDir)
        reader.Update()

        self.viewer = vtk.vtkImageViewer()
        # self.viewer = vtk.vtkImageViewer2()
        # self.viewer = vtk.vtkResliceImageViewer()
        self.viewer.SetInputData(reader.GetOutput())

        self.viewer.SetupInteractor(self.vtkWidget)
        self.viewer.SetRenderWindow(self.vtkWidget.GetRenderWindow())
        self.viewer.Render()
        self.frame.setLayout(self.vl)
        self.setCentralWidget(self.frame)

        self.show()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec_())        

1 Ответ

0 голосов
/ 15 июля 2019

Просто используйте

self.viewer = vtk.vtkImageViewer2()

и добавьте

self.vtkWidget.Initialize()

после self.show ()

...