PyQt Python VTK PCL Qt pyqt5Gui 点云 三维重建,可视化

PyQt   Python VTK  PCL Qt pyqt5Gui  三维重建,可视化;

使用Python 可视化 GUI,需要用到 Qt; 这里是一个简单的例子,读取点云数据,显示;

基于 VTK9, pyqt5 ,python3.9 ,pypcl0.11

PyQt Python VTK PCL Qt pyqt5Gui 点云 三维重建,可视化_第1张图片

# This is a sample Python script.

# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
import vtk
from PyQt5 import QtCore, QtGui, QtWidgets
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from testvtkgui import Ui_MainWindow
import pcl.pcl_visualization


class Mywindow(QtWidgets.QMainWindow, Ui_MainWindow):

    def __init__(self):
        super(Mywindow, self).__init__()
        self.setupUi(self)
        self.setWindowTitle('test_gui')
      #visual = pcl.pcl_visualization.CloudViewing()


        self.frame = QtWidgets.QFrame()
        self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
        self.formLayout.addWidget(self.vtkWidget)

        #self.vtkWidget.SetRenderWindow(visual.RenderWindow())
        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        fileName = "D:\\rabbit.pcd";  # 注意更换自己的pcd点云文件
        cloud = pcl.load('D:/2cloud.pcd')

        poins = vtk.vtkPoints()
        for i in range(cloud.size):
          dp = cloud[i]
          poins.InsertNextPoint(dp[0], dp[1], dp[2])

        polydata = vtk.vtkPolyData()
        polydata.SetPoints(poins)

        glyphFilter = vtk.vtkVertexGlyphFilter()
        glyphFilter.SetInputData(polydata)
        glyphFilter.Update()

        dataMapper = vtk.vtkPolyDataMapper()
        dataMapper.SetInputConnection(glyphFilter.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(dataMapper)

        actor1 = vtk.vtkActor()
        actor1.SetMapper(dataMapper)

        self.ren.AddActor(actor)
        self.ren.AddActor(actor1)

        self.ren.ResetCamera()

        #self.frame.setLayout(self.formLayout)
        #self.setCentralWidget(self.frame)

        self.show()
        self.iren.Initialize()


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

你可能感兴趣的:(PCL,Python,python,pyqt,qt)