def __init__(self, orientation='transverse', parent=None):
        super(QSliceViewWidget, self).__init__(parent)
        # set up vtk pipeline and create vtkWidget
        colors = vtk.vtkNamedColors()
        self.orientation = orientation
        self.viewer = vtk.vtkImageViewer2()
        self.orientations = {'coronal': 0, 'sagittal': 1, 'transverse': 2}
        self.viewer.SetSliceOrientation(self.orientations[self.orientation])
        # get&set the camera
        self.camera = self.viewer.GetRenderer().GetActiveCamera()
        ras = [[-1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, -1.0]]
        self.camera.SetPosition(ras[self.orientations[self.orientation]])
        self.camera.ParallelProjectionOn()
        self.iren = vtk.vtkGenericRenderWindowInteractor()
        self.iren.SetRenderWindow(self.viewer.GetRenderWindow())
        kw = {'rw': self.viewer.GetRenderWindow(), 'iren': self.iren}
        self.vtkWidget = QVTKRenderWindowInteractor(parent, **kw)

        # create QSlider
        self.sliderWidget = QSlider(Qt.Horizontal)
        # create the MainLayout of the whole widget
        self.MainLayout = QVBoxLayout()
        self.MainLayout.addWidget(self.sliderWidget)
        self.MainLayout.addWidget(self.vtkWidget)
        self.setLayout(self.MainLayout)
        # set the signal and slot
        self.sliderWidget.valueChanged.connect(self.slider_changed)
Exemple #2
0
    def __init__(self):
        super(MyWindow, self).__init__()
        os.chdir(functionPath)
        uic.loadUi("registration_gui.ui", self)
        os.chdir(startPath)
        # Connect buttons to functions
        # import moving data
        self.ptcldMovingButton.clicked.connect(self.import_data)
        # import fixed data
        self.ptcldFixedButton.clicked.connect(self.import_data)
        # execute qr_register function
        self.registrationButton.clicked.connect(self.register)

        self.vl = QtGui.QVBoxLayout()
        self.vtkWidget = QVTKRenderWindowInteractor(self.vtkFrame)
        self.vl.addWidget(self.vtkWidget)

        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        self.actor_moving = vtk.vtkActor()
        self.moving_color = (0, 0.2)
        self.actor_fixed = vtk.vtkActor()
        self.fixed_color = (.8, 1)

        self.ren.AddActor(self.actor_moving)
        self.ren.AddActor(self.actor_fixed)

        self.ren.ResetCamera()

        self.vtkFrame.setLayout(self.vl)
        self.show()
        self.iren.Initialize()
        self.iren.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())
    def __init__(self, parent=None):
        super(QVolumeViewWidget, self).__init__(parent)
        # set up vtk pipeline and create vtkWidget
        self.renw = vtk.vtkRenderWindow()
        self.iren = vtk.vtkGenericRenderWindowInteractor()
        self.iren.SetRenderWindow(self.renw)
        kw = {'rw': self.renw, 'iren': self.iren}
        self.vtkWidget = QVTKRenderWindowInteractor(parent, **kw)
        self.MainLayout = QVBoxLayout()
        self.MainLayout.addWidget(self.vtkWidget)
        self.setLayout(self.MainLayout)
        # self.vtkWidget = QVTKRenderWindowInteractor()
        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)

        # add the orientation marker widget
        self.axes = vtk.vtkAxesActor()
        self.widget = vtk.vtkOrientationMarkerWidget()
        xyzLabels = ['R', 'A', 'S']
        self.axes.SetXAxisLabelText(xyzLabels[0])
        self.axes.SetYAxisLabelText(xyzLabels[1])
        self.axes.SetZAxisLabelText(xyzLabels[2])
        self.widget.SetOrientationMarker(self.axes)
        self.widget.SetInteractor(self.vtkWidget)
        self.widget.SetViewport(0.8, 0.0, 1, 0.3)
        self.widget.SetEnabled(True)
        self.widget.InteractiveOn()
        self.picker = vtk.vtkVolumePicker()
Exemple #4
0
def mrMeshVTKWindow(parentUI, theMeshInstance, data):
    _translate = QtCore.QCoreApplication.translate

    #create a new vtkWidget, appending to the list of exisitng widgets
    if debug: print(parentUI)
    newVTKWidgetInstance = QVTKRenderWindowInteractor(parentUI.centralwidget)
    parentUI.vtkInstances.append(newVTKWidgetInstance)

    currMeshCount = (len(parentUI.vtkInstances))

    # we have to make a new tab and layout for it to go to.
    parentUI.newTab = QtWidgets.QWidget()
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding,
                                       QtWidgets.QSizePolicy.MinimumExpanding)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(
        parentUI.newTab.sizePolicy().hasHeightForWidth())
    parentUI.newTab.setSizePolicy(sizePolicy)
    parentUI.newTab.setObjectName("tab%s" % currMeshCount)
    parentUI.gridLayoutTabNew = QtWidgets.QGridLayout(parentUI.newTab)
    parentUI.gridLayoutTabNew.setContentsMargins(0, 0, 0, 0)
    parentUI.gridLayoutTabNew.setObjectName("gridLayoutTab%s" % currMeshCount)
    parentUI.gridLayoutVTKWinNew = QtWidgets.QGridLayout()
    parentUI.gridLayoutVTKWinNew.setObjectName("gridLayoutVTKWin%s" %
                                               currMeshCount)
    parentUI.gridLayoutTabNew.addLayout(parentUI.gridLayoutVTKWinNew, 0, 0, 1,
                                        1)

    parentUI.gridLayoutVTKWinNew.addWidget(newVTKWidgetInstance, 0, 0, 1, 1)
    parentUI.tabWidget.addTab(parentUI.newTab, "Mesh-%s" % theMeshInstance)

    # have to set the resize policy now
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding,
                                       QtWidgets.QSizePolicy.MinimumExpanding)
    parentUI.vtkInstances[-1].setSizePolicy(sizePolicy)
    parentUI.vtkInstances[-1].ren = vtk.vtkRenderer()
    parentUI.vtkInstances[-1].GetRenderWindow().AddRenderer(
        parentUI.vtkInstances[-1].ren)
    parentUI.vtkInstances[-1].iren = parentUI.vtkInstances[-1].GetRenderWindow(
    ).GetInteractor()
    parentUI.gridLayoutVTKWinNew.addWidget(parentUI.vtkInstances[-1], 0, 0, 1,
                                           1)

    parentUI.tabWidget.setCurrentIndex(len(parentUI.vtkInstances) -
                                       1)  #zero index
    parentUI.tabWidget.update()

    style = vtk.vtkInteractorStyleTrackballCamera()
    parentUI.vtkInstances[-1].SetInteractorStyle(style)

    # flip the camera
    parentUI.vtkInstances[-1].ren.GetActiveCamera().SetViewUp(0, -1, 0)

    if data == 'debug':
        loadTestVTKWindow(parentUI)
    else:
        initializeEmptyVTKWindowInstance(parentUI)
    print('Finished setting up new VTK window instance ...')
 def __set_tab3d_layout(self):
     frame = QFrame()
     # add a vtk-based window for interaction
     self.__vtkWidget = QVTKRenderWindowInteractor(frame)
     # add a label and a text box for input of the object id
     self.__lbl_3d_idx = QLabel('ID:', self)
     self.__txt_box_3d_idx = QLineEdit(self)
     # add a button to save 3D images
     self.__btn_save_3d_img = QPushButton('Save Image', self)
     self.__btn_save_3d_img.setToolTip('Save 3D image to the file.')
     self.__btn_save_3d_img.clicked.connect(self.save_3d_image)
     # set the layout of the tab which holds the 3D cameras
     self.__tab3D.setLayout(self.__create_3d_cams_grid_layout())
    def __init__(self, stlScale = 0.001, 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)
 
        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
 
        # Create sphere
        source = vtk.vtkSphereSource()
        source.SetCenter(0, 0, 0)
        source.SetRadius(0.003)
        sphereMapper = vtk.vtkPolyDataMapper()
        sphereMapper.SetInputConnection(source.GetOutputPort())
        self.sphereActor = vtk.vtkActor()
        self.sphereActor.SetMapper(sphereMapper)
        self.sphereActor.GetProperty().SetColor(1, 0, 0)
        self.ren.AddActor(self.sphereActor)
 
        # Read in STL
        reader = vtk.vtkSTLReader()
        reader.SetFileName('/home/biomed/october_15_ws/src/dvrk_vision/defaults/femur.stl')
        scaler = vtk.vtkTransformFilter()
        if vtk.VTK_MAJOR_VERSION <= 5:
            scaler.SetInputConnection(reader.GetOutput())
        else:
            scaler.SetInputConnection(reader.GetOutputPort())
        scaleTransform = vtk.vtkTransform()
        scaleTransform.Identity()
        scaleTransform.Scale(stlScale, stlScale, stlScale)
        scaler.SetTransform(scaleTransform)
        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        if vtk.VTK_MAJOR_VERSION <= 5:
            mapper.SetInput(scaler.GetOutput())
        else:
            mapper.SetInputConnection(scaler.GetOutputPort())
        # Create an actor
        self.actor = vtk.vtkActor()
        self.actor.SetMapper(mapper)

        # Read in camera registration
        scriptDirectory = os.path.dirname(os.path.abspath(__file__))
        filePath = os.path.join(scriptDirectory, '..', '..', 'defaults', 
                                'registration_params.yaml')
        with open(filePath, 'r') as f:
            data = yaml.load(f)

        self.camTransform = np.array(data['transform'])
 
        # Add point cloud
        self.pointCloud = VtkPointCloud()
        tf = np.linalg.inv(self.camTransform)
        transform = vtk.vtkTransform()
        transform.SetMatrix(tf.ravel())
        self.pointCloud.vtkActor.SetPosition(transform.GetPosition())
        self.pointCloud.vtkActor.SetOrientation(transform.GetOrientation())
        self.ren.AddActor(self.pointCloud.vtkActor)
 
        self.ren.AddActor(self.actor)

        poseSub = rospy.Subscriber("/stereo/registration_pose", PoseStamped, self.poseCallback)
 
        self.ren.ResetCamera()
 
        self.frame.setLayout(self.vl)
        self.setCentralWidget(self.frame)

        self.vtkThread = QThread()
        
        self.actorMat = np.eye(4)

        self.thread = QThread()
        robot = psm('PSM2')
        self.worker = Worker(robot)
        self.worker.intReady.connect(self.onIntReady)
        self.worker.moveToThread(self.thread)
        self.worker.finished.connect(self.thread.quit)
        self.thread.started.connect(self.worker.procCounter)
        self.thread.start()

        self.started = False
 
        self.show()
        self.iren.Initialize()
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1270, 715)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(0, 40, 121, 21))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(0, 220, 121, 21))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(0, 200, 121, 21))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(0, 80, 121, 21))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(0, 60, 121, 21))
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_7 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_7.setGeometry(QtCore.QRect(0, 100, 121, 21))
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_8 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_8.setGeometry(QtCore.QRect(0, 20, 121, 21))
        self.pushButton_8.setObjectName("pushButton_8")
        self.label = QtGui.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(1150, 10, 81, 16))
        self.label.setObjectName("label")
        self.scrollArea = QtGui.QScrollArea(self.centralwidget)
        self.scrollArea.setGeometry(QtCore.QRect(1100, 190, 171, 211))
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollAreaWidgetContents = QtGui.QWidget(self.scrollArea)
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 169, 209))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.listWidget = QtGui.QListWidget(self.scrollAreaWidgetContents)
        self.listWidget.setGeometry(QtCore.QRect(0, 20, 171, 191))
        self.listWidget.setObjectName("listWidget")
        self.label_2 = QtGui.QLabel(self.scrollAreaWidgetContents)
        self.label_2.setGeometry(QtCore.QRect(40, 0, 101, 16))
        self.label_2.setObjectName("label_2")
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.frame = QtGui.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(1100, 440, 171, 231))
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.label_3 = QtGui.QLabel(self.frame)
        self.label_3.setGeometry(QtCore.QRect(30, 0, 121, 20))
        self.label_3.setObjectName("label_3")
        self.frame_2 = QtGui.QFrame(self.centralwidget)
        self.frame_2.setGeometry(QtCore.QRect(0, 340, 120, 331))
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.label_4 = QtGui.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(0, 320, 111, 16))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtGui.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(0, 0, 131, 16))
        self.label_5.setObjectName("label_5")
        self.pushButton_13 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_13.setGeometry(QtCore.QRect(0, 140, 121, 21))
        self.pushButton_13.setObjectName("pushButton_13")
        self.pushButton_14 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_14.setGeometry(QtCore.QRect(0, 120, 121, 21))
        self.pushButton_14.setObjectName("pushButton_14")
        self.pushButton_16 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_16.setGeometry(QtCore.QRect(1100, 80, 171, 20))
        self.pushButton_16.setObjectName("pushButton_16")
        self.pushButton_17 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_17.setGeometry(QtCore.QRect(1180, 420, 91, 21))
        self.pushButton_17.setObjectName("pushButton_17")
        self.pushButton_18 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_18.setGeometry(QtCore.QRect(1180, 400, 51, 21))
        self.pushButton_18.setObjectName("pushButton_18")
        self.pushButton_19 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_19.setGeometry(QtCore.QRect(1230, 400, 41, 21))
        self.pushButton_19.setObjectName("pushButton_19")
        self.pushButton_20 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_20.setGeometry(QtCore.QRect(1100, 420, 81, 21))
        self.pushButton_20.setObjectName("pushButton_20")
        self.pushButton_21 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_21.setGeometry(QtCore.QRect(1100, 400, 81, 21))
        self.pushButton_21.setObjectName("pushButton_21")
        self.frame_3 = QtGui.QFrame(self.centralwidget)
        self.frame_3.setGeometry(QtCore.QRect(350, 0, 601, 31))
        self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_3.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_3.setObjectName("frame_3")
        self.pushButton_10 = QtGui.QPushButton(self.frame_3)
        self.pushButton_10.setGeometry(QtCore.QRect(50, 0, 61, 31))
        self.pushButton_10.setObjectName("pushButton_10")
        self.textEdit = QtGui.QTextEdit(self.frame_3)
        self.textEdit.setGeometry(QtCore.QRect(110, 0, 61, 31))
        self.textEdit.setObjectName("textEdit")
        self.label_6 = QtGui.QLabel(self.frame_3)
        self.label_6.setGeometry(QtCore.QRect(0, 0, 41, 31))
        self.label_6.setObjectName("label_6")
        self.pushButton_9 = QtGui.QPushButton(self.frame_3)
        self.pushButton_9.setGeometry(QtCore.QRect(290, 0, 85, 31))
        self.pushButton_9.setObjectName("pushButton_9")
        self.horizontalSlider = QtGui.QSlider(self.frame_3)
        self.horizontalSlider.setGeometry(QtCore.QRect(450, 10, 101, 19))
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.setObjectName("horizontalSlider")
        self.pushButton_11 = QtGui.QPushButton(self.frame_3)
        self.pushButton_11.setGeometry(QtCore.QRect(550, 0, 51, 31))
        self.pushButton_11.setObjectName("pushButton_11")
        self.label_7 = QtGui.QLabel(self.frame_3)
        self.label_7.setGeometry(QtCore.QRect(390, 10, 41, 16))
        self.label_7.setObjectName("label_7")
        self.pushButton_26 = QtGui.QPushButton(self.frame_3)
        self.pushButton_26.setGeometry(QtCore.QRect(170, 0, 41, 31))
        self.pushButton_26.setObjectName("pushButton_26")
        self.pushButton_27 = QtGui.QPushButton(self.frame_3)
        self.pushButton_27.setGeometry(QtCore.QRect(210, 0, 41, 31))
        self.pushButton_27.setObjectName("pushButton_27")
        self.pushButton_28 = QtGui.QPushButton(self.frame_3)
        self.pushButton_28.setGeometry(QtCore.QRect(250, 0, 41, 31))
        self.pushButton_28.setObjectName("pushButton_28")
        self.frame_4 = QtGui.QFrame(self.centralwidget)
        self.frame_4.setGeometry(QtCore.QRect(950, 0, 151, 31))
        self.frame_4.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_4.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_4.setObjectName("frame_4")
        self.label_9 = QtGui.QLabel(self.frame_4)
        self.label_9.setGeometry(QtCore.QRect(0, 0, 81, 31))
        self.label_9.setObjectName("label_9")
        self.plainTextEdit_2 = QtGui.QPlainTextEdit(self.frame_4)
        self.plainTextEdit_2.setGeometry(QtCore.QRect(80, 0, 31, 31))
        self.plainTextEdit_2.setObjectName("plainTextEdit_2")
        self.pushButton_12 = QtGui.QPushButton(self.frame_4)
        self.pushButton_12.setGeometry(QtCore.QRect(110, 0, 41, 31))
        self.pushButton_12.setObjectName("pushButton_12")
        self.pushButton_22 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_22.setGeometry(QtCore.QRect(0, 240, 121, 21))
        self.pushButton_22.setObjectName("pushButton_22")
        self.pushButton_23 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_23.setGeometry(QtCore.QRect(0, 260, 121, 21))
        self.pushButton_23.setObjectName("pushButton_23")
        self.pushButton_24 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_24.setGeometry(QtCore.QRect(0, 280, 121, 21))
        self.pushButton_24.setObjectName("pushButton_24")
        self.pushButton_25 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_25.setGeometry(QtCore.QRect(0, 300, 121, 21))
        self.pushButton_25.setObjectName("pushButton_25")
        self.qvtkWidget = QVTKRenderWindowInteractor(self.centralwidget)
        self.qvtkWidget.setGeometry(QtCore.QRect(130, 30, 971, 641))
        self.qvtkWidget.setObjectName("qvtkWidget")
        self.kurlrequester = KUrlRequester(self.centralwidget)
        self.kurlrequester.setGeometry(QtCore.QRect(130, 0, 201, 31))
        self.kurlrequester.setObjectName("kurlrequester")
        self.listWidget_2 = QtGui.QListWidget(self.centralwidget)
        self.listWidget_2.setGeometry(QtCore.QRect(1100, 30, 171, 51))
        self.listWidget_2.setObjectName("listWidget_2")
        self.pushButton_29 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_29.setGeometry(QtCore.QRect(1220, 160, 51, 31))
        self.pushButton_29.setObjectName("pushButton_29")
        self.label_10 = QtGui.QLabel(self.centralwidget)
        self.label_10.setGeometry(QtCore.QRect(1110, 100, 121, 20))
        self.label_10.setObjectName("label_10")
        self.kintnuminput = KIntNumInput(self.centralwidget)
        self.kintnuminput.setGeometry(QtCore.QRect(1160, 120, 31, 21))
        self.kintnuminput.setObjectName("kintnuminput")
        self.kintnuminput_2 = KIntNumInput(self.centralwidget)
        self.kintnuminput_2.setGeometry(QtCore.QRect(1190, 120, 31, 21))
        self.kintnuminput_2.setObjectName("kintnuminput_2")
        self.kintnuminput_4 = KIntNumInput(self.centralwidget)
        self.kintnuminput_4.setGeometry(QtCore.QRect(1160, 140, 31, 21))
        self.kintnuminput_4.setObjectName("kintnuminput_4")
        self.kintnuminput_5 = KIntNumInput(self.centralwidget)
        self.kintnuminput_5.setGeometry(QtCore.QRect(1190, 140, 31, 21))
        self.kintnuminput_5.setObjectName("kintnuminput_5")
        self.kintnuminput_7 = KIntNumInput(self.centralwidget)
        self.kintnuminput_7.setGeometry(QtCore.QRect(1160, 160, 31, 21))
        self.kintnuminput_7.setObjectName("kintnuminput_7")
        self.kintnuminput_8 = KIntNumInput(self.centralwidget)
        self.kintnuminput_8.setGeometry(QtCore.QRect(1190, 160, 31, 21))
        self.kintnuminput_8.setObjectName("kintnuminput_8")
        self.label_8 = QtGui.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(1130, 120, 21, 16))
        self.label_8.setObjectName("label_8")
        self.label_11 = QtGui.QLabel(self.centralwidget)
        self.label_11.setGeometry(QtCore.QRect(1130, 140, 21, 16))
        self.label_11.setObjectName("label_11")
        self.label_12 = QtGui.QLabel(self.centralwidget)
        self.label_12.setGeometry(QtCore.QRect(1130, 160, 21, 16))
        self.label_12.setObjectName("label_12")
        self.pushButton_6 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(0, 160, 121, 21))
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_15 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_15.setGeometry(QtCore.QRect(0, 180, 121, 21))
        self.pushButton_15.setObjectName("pushButton_15")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1270, 23))
        self.menubar.setObjectName("menubar")
        self.menuInput = QtGui.QMenu(self.menubar)
        self.menuInput.setObjectName("menuInput")
        self.menuOutput = QtGui.QMenu(self.menubar)
        self.menuOutput.setObjectName("menuOutput")
        self.menuSettings = QtGui.QMenu(self.menubar)
        self.menuSettings.setObjectName("menuSettings")
        self.menuHelp = QtGui.QMenu(self.menubar)
        self.menuHelp.setObjectName("menuHelp")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionImport_vtk_file = QtGui.QAction(MainWindow)
        self.actionImport_vtk_file.setObjectName("actionImport_vtk_file")
        self.actionImport_dat_file = QtGui.QAction(MainWindow)
        self.actionImport_dat_file.setObjectName("actionImport_dat_file")
        self.actionSave_as_JPEG = QtGui.QAction(MainWindow)
        self.actionSave_as_JPEG.setObjectName("actionSave_as_JPEG")
        self.actionAutor = QtGui.QAction(MainWindow)
        self.actionAutor.setObjectName("actionAutor")
        self.actionWersja = QtGui.QAction(MainWindow)
        self.actionWersja.setObjectName("actionWersja")
        self.actionLinki = QtGui.QAction(MainWindow)
        self.actionLinki.setObjectName("actionLinki")
        self.actionBackground_color = QtGui.QAction(MainWindow)
        self.actionBackground_color.setObjectName("actionBackground_color")
        self.actionWork_space = QtGui.QAction(MainWindow)
        self.actionWork_space.setObjectName("actionWork_space")
        self.actionExport_properties = QtGui.QAction(MainWindow)
        self.actionExport_properties.setObjectName("actionExport_properties")
        self.actionExit = QtGui.QAction(MainWindow)
        self.actionExit.setObjectName("actionExit")
        self.actionSave_Session = QtGui.QAction(MainWindow)
        self.actionSave_Session.setObjectName("actionSave_Session")
        self.actionExport_directory = QtGui.QAction(MainWindow)
        self.actionExport_directory.setObjectName("actionExport_directory")
        self.actionTutorials = QtGui.QAction(MainWindow)
        self.actionTutorials.setObjectName("actionTutorials")
        self.menuInput.addAction(self.actionSave_Session)
        self.menuInput.addAction(self.actionExit)
        self.menuOutput.addAction(self.actionSave_as_JPEG)
        self.menuOutput.addAction(self.actionExport_directory)
        self.menuSettings.addAction(self.actionBackground_color)
        self.menuSettings.addAction(self.actionWork_space)
        self.menuHelp.addAction(self.actionAutor)
        self.menuHelp.addAction(self.actionTutorials)
        self.menubar.addAction(self.menuInput.menuAction())
        self.menubar.addAction(self.menuOutput.menuAction())
        self.menubar.addAction(self.menuSettings.menuAction())
        self.menubar.addAction(self.menuHelp.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.connections()
Exemple #8
0
    def __init__(self, parent=None):

        parent.resize(765, 545)
        parent.setWindowTitle('Render scene')
        self.qvtkWidget = QVTKRenderWindowInteractor(parent)
        self.qvtkWidget.setGeometry(QtCore.QRect(0, 0, 761, 521))
        self.qvtkWidget.setObjectName("qvtkWidget")
        self.PhotoButton = QtGui.QPushButton(parent)
        self.PhotoButton.setGeometry(QtCore.QRect(0, 523, 50, 20))
        self.Label = QtGui.QLabel(parent)
        self.Label.setGeometry(QtCore.QRect(55, 523, 100, 20))
        self.plainTextEdit = QtGui.QPlainTextEdit(parent)
        self.plainTextEdit.setGeometry(QtCore.QRect(160, 523, 50, 20))

        self.XviewButton = QtGui.QPushButton(parent)
        self.XviewButton.setGeometry(QtCore.QRect(215, 523, 50, 20))

        self.YviewButton = QtGui.QPushButton(parent)
        self.YviewButton.setGeometry(QtCore.QRect(270, 523, 50, 20))

        self.ZviewButton = QtGui.QPushButton(parent)
        self.ZviewButton.setGeometry(QtCore.QRect(325, 523, 50, 20))

        self.ResetCameraButton = QtGui.QPushButton(parent)
        self.ResetCameraButton.setGeometry(QtCore.QRect(380, 523, 80, 20))

        self.BackgroundColorButton = QtGui.QPushButton(parent)
        self.BackgroundColorButton.setGeometry(QtCore.QRect(465, 523, 150, 20))

        self.PhotoButton.setText(
            QtGui.QApplication.translate("SubWindow", "Photo !", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.Label.setText(
            QtGui.QApplication.translate("MainWindow", "Set magnification",
                                         None, QtGui.QApplication.UnicodeUTF8))
        self.XviewButton.setText(
            QtGui.QApplication.translate("MainWindow", "Xview", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.YviewButton.setText(
            QtGui.QApplication.translate("MainWindow", "Yview", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.ZviewButton.setText(
            QtGui.QApplication.translate("MainWindow", "Zview", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.ResetCameraButton.setText(
            QtGui.QApplication.translate("MainWindow", "Reset Camera", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.BackgroundColorButton.setText(
            QtGui.QApplication.translate("MainWindow",
                                         "Change background color", None,
                                         QtGui.QApplication.UnicodeUTF8))

        self.renderer = vtk.vtkRenderer()
        self.renderer.SetBackground(1, 1, 1)
        self.renderer.ResetCamera()
        self.qvtkWidget.GetRenderWindow().AddRenderer(self.renderer)

        QtCore.QObject.connect(self.PhotoButton, QtCore.SIGNAL('clicked()'),
                               self.photo)
        QtCore.QObject.connect(self.XviewButton, QtCore.SIGNAL('clicked()'),
                               self.x_view)
        QtCore.QObject.connect(self.YviewButton, QtCore.SIGNAL('clicked()'),
                               self.y_view)
        QtCore.QObject.connect(self.ZviewButton, QtCore.SIGNAL('clicked()'),
                               self.z_view)
        QtCore.QObject.connect(self.ResetCameraButton,
                               QtCore.SIGNAL('clicked()'), self.reset_camera)
        QtCore.QObject.connect(self.BackgroundColorButton,
                               QtCore.SIGNAL('clicked()'),
                               self.change_background_color)
Exemple #9
0
    def __init__(self, parent=None):
        Qt.QMainWindow.__init__(self, parent)
        self.__counter = 0
        self.__prefix = "/home/adriano/PycharmProjects/realsense_multicam/pics/"
        self.frame = Qt.QFrame()
        self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
        self.pd_collection = []
        self.mapper_collection = []
        self.actor_collection = []
        self.np_array = []
        self.cells_npy = []
        self.timer_count = 0
        self._n_coordinates = 0
        self.align = rs.align(rs.stream.color)
        self._iren = self.vtkWidget.GetRenderWindow().GetInteractor()
        self._iren.GetInteractorStyle().SetCurrentStyleToTrackballActor()
        self._iren.GetInteractorStyle().SetCurrentStyleToTrackballCamera()
        print(type(self._iren.GetInteractorStyle()))
        self._timer = QTimer(self)
        self.__label_idx = QLabel('ID:', self)
        self.__txt_box_idx = QLineEdit(self)
        self.__button = QPushButton('Save Image', self)
        self.__button.setToolTip('Save 3D image.')
        self.__button.clicked.connect(self.save_image)
        self._timer.timeout.connect(self.timer_event)
        self.view_coordinates = [[0., .5, .5, 1.], [.5, .5, 1., 1.],
                                 [0., 0., .5, .5], [.5, 0., 1., .5]]
        cam_counter = 0

        for pipe in pipelines:
            frame_set = pipe.wait_for_frames()

            # Wait for a coherent color frame
            # frames = None  # real_sense_cam.get_pipeline().wait_for_frames()
            # Align the depth frame to color frame
            aligned_frames = self.align.process(frame_set)

            depth_frame = aligned_frames.get_depth_frame()
            color_frame = aligned_frames.get_color_frame()
            color_image = np.asanyarray(color_frame.get_data())
            color_image = color_image.reshape(
                (color_image.shape[0] * color_image.shape[1], 3))

            # self._colors.SetNumberOfTuples(color_image.shape[0])
            colors = vtk.vtkUnsignedCharArray()
            colors.SetNumberOfComponents(3)
            # colors.SetName("Colors")

            current_pd = vtk.vtkPolyData()
            self.pd_collection.append(current_pd)
            colors.SetArray(vtk_np.numpy_to_vtk(color_image),
                            color_image.shape[0] * color_image.shape[1], 1)
            current_pd.GetPointData().SetScalars(colors)

            pc = rs.pointcloud()
            point_cloud = pc.calculate(depth_frame)
            pc.map_to(color_frame)
            v, t = point_cloud.get_vertices(
            ), point_cloud.get_texture_coordinates()
            vertices = np.asanyarray(v).view(np.float32).reshape(-1, 3)  # xyz

            self._n_coordinates = vertices.shape[0]

            points = vtk.vtkPoints()
            cells = vtk.vtkCellArray()

            points.SetData(vtk_np.numpy_to_vtk(vertices))
            cells_npy = np.vstack([
                np.ones(self._n_coordinates, dtype=np.int64),
                np.arange(self._n_coordinates, dtype=np.int64)
            ]).T.flatten()
            cells.SetCells(self._n_coordinates,
                           vtk_np.numpy_to_vtkIdTypeArray(cells_npy))
            self.pd_collection[cam_counter].SetPoints(points)
            self.pd_collection[cam_counter].SetVerts(cells)

            mapper = vtk.vtkPolyDataMapper()
            self.mapper_collection.append(mapper)
            self.mapper_collection[cam_counter].SetInputData(
                self.pd_collection[cam_counter])

            transform = vtk.vtkTransform()
            transform.SetMatrix(flip_transform)

            actor = vtk.vtkActor()
            self.actor_collection.append(actor)
            self.actor_collection[cam_counter].SetMapper(
                self.mapper_collection[cam_counter])
            self.actor_collection[cam_counter].GetProperty(
            ).SetRepresentationToPoints()
            self.actor_collection[cam_counter].SetUserTransform(transform)

            current_ren = vtk.vtkRenderer()
            current_ren.GetActiveCamera()

            # set viewports if the number of cams ara greater than one
            if len(pipelines) > 1:
                current_ren.SetViewport(self.view_coordinates[cam_counter])
            current_ren.AddActor(self.actor_collection[cam_counter])
            self.vtkWidget.GetRenderWindow().AddRenderer(current_ren)
            cam_counter += 1

        self._iren.AddObserver('TimerEvent', self.update_poly_data)

        dt = 30  # ms
        ide = self._iren.CreateRepeatingTimer(dt)

        self.frame.setLayout(self.__create_grid_layout())
        self.setCentralWidget(self.frame)
        self.setWindowTitle("SmartUS Image Collector")
        self.__txt_box_idx.setFocus()

        self.show()
        self._iren.Initialize()
        self._iren.Start()