Beispiel #1
0
def saveConvexHulls(chulls, outputDir):

    if os.path.isdir(outputDir):
        print 'removing directory:', outputDir
        shutil.rmtree(outputDir)

    print 'making directory:', outputDir
    os.makedirs(outputDir)

    for i, chull in enumerate(chulls):

        chull, plane = chull.convexHull, chull.plane
        origin = plane.GetOrigin()
        normal = plane.GetNormal()
        chullPoints = vnp.getNumpyFromVtk(chull, 'Points')

        assert np.allclose(np.linalg.norm(normal), 1.0)

        output = np.vstack([normal, chullPoints])
        outputFilename = os.path.join(outputDir, 'plane_%04d.txt' % i)

        np.savetxt(outputFilename, output)

    ioutils.writePolyData(getMergedConvexHullsMesh(chulls),
                          os.path.join(outputDir, 'merged_planes.ply'))
Beispiel #2
0
 def getFilesystemFilename(self, meshId):
     if meshId in self.meshes:
         filename = os.path.join(self.cacheDirectory,
                                 "%s.%s" % (meshId, self.cacheDataType))
         if not os.path.isfile(filename):
             ioutils.writePolyData(self.get(meshId), filename)
         return filename
     return None
Beispiel #3
0
def onFileSaveData():

    obj = om.getActiveObject()
    if not obj:
        app.showErrorMessage("Please select an object",
                             title="No object selected")
        return
    if isinstance(obj, otdfmodel.OtdfModelItem):
        mainWindow = app.getMainWindow()
        filename = QtGui.QFileDialog.getSaveFileName(
            mainWindow,
            "Save Data...",
            getDefaultDirectory(),
            "OTDF (*.otdf)",
            "OTDF (*.otdf)",
        )

        if not os.path.splitext(filename)[1]:
            filename += ".otdf"

        storeDefaultDirectory(filename)
        otdfString = obj.parser.getUpdatedOtdf()
        otdfFile = open(filename, "w")
        otdfFile.write(otdfString)
        otdfFile.close()
    elif hasattr(obj, "polyData"):
        mainWindow = app.getMainWindow()
        fileFilters = "PLY (*.ply);;STL (*.stl);;VTP (*.vtp);;VTK (*.vtk)"
        defaultFilter = "VTP (*.vtp)"
        filename = QtGui.QFileDialog.getSaveFileName(
            mainWindow,
            "Save Data...",
            getDefaultDirectory(),
            fileFilters,
            defaultFilter,
        )

        if not filename:
            return

        if not os.path.splitext(filename)[1]:
            filename += ".vtp"

        polyData = io.writePolyData(obj.polyData, filename)
    else:
        app.showErrorMessage(
            "Please select an object that contains geometry data or an OTDF object",
            title="Invalid object selected",
        )
        return

    storeDefaultDirectory(filename)
'''
directorPython demoPointCloudToFile.py
Listens to the requested topic and writes the first one to file
'''

import time
from director import segmentation
from director import vtkAll as vtk
from director import ioutils

reader = vtk.vtkRosPointCloudSubscriber()
reader.Start("/velodyne/point_cloud_filtered")

continueLoop = True
while (continueLoop):
    polyData = vtk.vtkPolyData()
    reader.GetPointCloud(polyData)
    frame_id = reader.GetFrameId()
    sec = reader.GetSec()
    nsec = reader.GetNsec()
    message = str(polyData.GetNumberOfPoints()) + " points, "
    message += frame_id + ", " + str(sec) + "." + str(nsec)
    print message

    if (polyData.GetNumberOfPoints() > 0):
        ioutils.writePolyData(polyData, 'out.vtk')
        continueLoop = False

    time.sleep(0.1)
import vtkRosPython as vtkRos
from director.shallowCopy import shallowCopy

vtkRos= vtkRos.vtkRosInit()
vtkRos.Start()

reader= vtkRos.vtkRosGridMapSubscriber()
reader.Start()
print reader

import time

continueLoop = True
while (continueLoop):
    polyData = vtk.vtkPolyData()
    reader.GetMesh(polyData)
    n = polyData.GetNumberOfPoints()
    print "Number of points",  polyData.GetNumberOfPoints()

    polyDataPC = vtk.vtkPolyData()
    reader.GetPointCloud(polyDataPC)
    print "Number of output points",  polyDataPC.GetNumberOfPoints()



    if (polyDataPC.GetNumberOfPoints() > 0):
        ioutils.writePolyData(polyDataPC, 'out.ply')
        continueLoop = False

    time.sleep(0.1)