Exporting pointclouds from python to .ply File - why is the file empty?How do I copy a file in Python?Python join: why is it string.join(list) instead of list.join(string)?Why are Python lambdas useful?Why can't Python parse this JSON data?Find all files in a directory with extension .txt in PythonHow do you append to a file in Python?Why is reading lines from stdin much slower in C++ than Python?How to check if the string is empty?How to remove a key from a Python dictionary?Why is “1000000000000000 in range(1000000000000001)” so fast in Python 3?

Can pay be witheld for hours cleaning up after closing time?

How to persuade recruiters to send me the Job Description?

Why doesn't the Falcon-9 first stage use three legs to land?

Why doesn't mathematics collapse even though humans quite often make mistakes in their proofs?

Does Swashbuckler's Fancy Footwork apply if the attack was made with Booming Blade?

How much code would a codegolf golf if a codegolf could golf code?

Can you feel passing through the sound barrier in an F-16?

What professions would a medieval village with a population of 100 need?

Replace backtick ` with power ^ in math mode

Was Switzerland really impossible to invade during WW2?

Church Booleans

Is a butterfly one or two animals?

Why is Boris Johnson visiting only Paris & Berlin if every member of the EU needs to agree on a withdrawal deal?

How big would a Daddy Longlegs Spider need to be to kill an average Human?

Running script line by line automatically yet being asked before each line from second line onwards

Does C++20 mandate source code being stored in files?

Are there reliable, formulaic ways to form chords on the guitar?

Is there a known non-euclidean geometry where two concentric circles of different radii can intersect? (as in the novel "The Universe Between")

Thread-safe, Convenient and Performant Random Number Generator

Why didn’t Doctor Strange stay in the original winning timeline?

Can you be convicted for being a murderer twice?

Sleeping solo in a double sleeping bag

Does adding the 'precise' tag to daggers break anything?

Was 'help' pronounced starting with a vowel sound?



Exporting pointclouds from python to .ply File - why is the file empty?


How do I copy a file in Python?Python join: why is it string.join(list) instead of list.join(string)?Why are Python lambdas useful?Why can't Python parse this JSON data?Find all files in a directory with extension .txt in PythonHow do you append to a file in Python?Why is reading lines from stdin much slower in C++ than Python?How to check if the string is empty?How to remove a key from a Python dictionary?Why is “1000000000000000 in range(1000000000000001)” so fast in Python 3?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








0















I want to export my pointcloud from python into a .ply file, so I can analyse it in meshlab/matlab from a disparity map



First I load the images and the calibration Matrix. Then I rectify the Images before creating the disparity map using the SBGM algorithm



Here is my Code:



import numpy as np
import cv2

#load unrectified images
unimgR =cv2.imread("R.jpg")
unimgL =cv2.imread("L.jpg")

#load calibration from calibration file
calibration = np.load(r"C:UsersXXXPycharmProjectsrectifyTest3_OpenCV_Rectified.npz", allow_pickle=False) # load variables from calibration file
imageSize = tuple(calibration["imageSize"])
leftMatrix = calibration["leftMatrix"]
leftDist = calibration["leftDist"]
leftMapX = calibration["leftMapX"]
leftMapY = calibration["leftMapY"]
leftROI = tuple(calibration["leftROI"])
rightMatrix = calibration["rightMatrix"]
rightDist = calibration["rightDist"]
rightMapX = calibration["rightMapX"]
rightMapY = calibration["rightMapY"]
rightROI = tuple(calibration["rightROI"])
disparityToDepthMap = calibration["disparityToDepthMap"]

# Rectify images (including monocular undistortion)
imgL = cv2.remap(unimgL, leftMapX, leftMapY, cv2.INTER_LINEAR)
imgR = cv2.remap(unimgR, rightMapX, rightMapY, cv2.INTER_LINEAR)

# SGBM Parameters
window_size = 15 # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
left_matcher = cv2.StereoSGBM_create(
minDisparity=0,
numDisparities=160, # max_disp has to be dividable by 16 f. E. HH 192, 256
blockSize=5,
P1=8 * 3 * window_size ** 2,
# wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
P2=32 * 3 * window_size ** 2,
disp12MaxDiff=1,
uniquenessRatio=15,
speckleWindowSize=0,
speckleRange=2,
preFilterCap=63,
mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
)
right_matcher = cv2.ximgproc.createRightMatcher(left_matcher)

# FILTER Parameters
lmbda = 80000
sigma = 1.2
visual_multiplier = 1.0

# Weighted least squares filter to fill sparse (unpopulated) areas of the disparity map
# by aligning the images edges and propagating disparity values from high- to low-confidence regions
wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
wls_filter.setLambda(lmbda)
wls_filter.setSigmaColor(sigma)

# Get depth information/disparity map using SGBM
displ = left_matcher.compute(imgL, imgR) # .astype(np.float32)/16
dispr = right_matcher.compute(imgR, imgL) # .astype(np.float32)/16
displ = np.int16(displ)
dispr = np.int16(dispr)

filteredImg = wls_filter.filter(displ, imgL, None, dispr) # important to put "imgL" here!!!
filteredImg = cv2.normalize(src=filteredImg, dst=filteredImg, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX);
filteredImg = np.uint8(filteredImg)

# Calculate 3D point cloud
points = cv2.reprojectImageTo3D(filteredImg,disparityToDepthMap) / 420 # needs to be divided by 420 to obtain metric values (80 without normalization)
print('...shape of the pointcloud:', pointCloud.shape)

cv2.imshow('Disparity Map', filteredImg)
cv2.waitKey()
cv2.destroyAllWindows()


I found this code on the Internet:
https://github.com/opencv/opencv/blob/master/samples/python/stereo_match.py



I want it to modify for my code
So I added:



ply_header = '''ply
format ascii 1.0
element vertex %(vert_num)d
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
end_header

'''
def write_ply(fn, verts, colors):
verts = verts.reshape(-1, 3)
colors = colors.reshape(-1, 3)
verts = np.hstack([verts, colors])
with open(fn, 'wb') as f:
f.write((ply_header % dict(vert_num=len(verts))).encode('utf-8'))
np.savetxt(f, verts, fmt='%f %f %f %d %d %d ')

colors = cv.cvtColor(imgL, cv.COLOR_BGR2RGB)
mask = displ> displ.min()
out_points = points[mask]
out_colors = colors[mask]
out_fn = 'out.ply'
write_ply('out.ply', out_points, out_colors)
print('%s saved' % 'out.ply')


but it only gives me an empty file ( if I want matlab to read it, it gives me the warning: "Warning: Not all points defined in the header could be loaded. ").



What did I wrong?



Sorry if it is a obvious fault, I am really a newbie into python










share|improve this question
































    0















    I want to export my pointcloud from python into a .ply file, so I can analyse it in meshlab/matlab from a disparity map



    First I load the images and the calibration Matrix. Then I rectify the Images before creating the disparity map using the SBGM algorithm



    Here is my Code:



    import numpy as np
    import cv2

    #load unrectified images
    unimgR =cv2.imread("R.jpg")
    unimgL =cv2.imread("L.jpg")

    #load calibration from calibration file
    calibration = np.load(r"C:UsersXXXPycharmProjectsrectifyTest3_OpenCV_Rectified.npz", allow_pickle=False) # load variables from calibration file
    imageSize = tuple(calibration["imageSize"])
    leftMatrix = calibration["leftMatrix"]
    leftDist = calibration["leftDist"]
    leftMapX = calibration["leftMapX"]
    leftMapY = calibration["leftMapY"]
    leftROI = tuple(calibration["leftROI"])
    rightMatrix = calibration["rightMatrix"]
    rightDist = calibration["rightDist"]
    rightMapX = calibration["rightMapX"]
    rightMapY = calibration["rightMapY"]
    rightROI = tuple(calibration["rightROI"])
    disparityToDepthMap = calibration["disparityToDepthMap"]

    # Rectify images (including monocular undistortion)
    imgL = cv2.remap(unimgL, leftMapX, leftMapY, cv2.INTER_LINEAR)
    imgR = cv2.remap(unimgR, rightMapX, rightMapY, cv2.INTER_LINEAR)

    # SGBM Parameters
    window_size = 15 # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
    left_matcher = cv2.StereoSGBM_create(
    minDisparity=0,
    numDisparities=160, # max_disp has to be dividable by 16 f. E. HH 192, 256
    blockSize=5,
    P1=8 * 3 * window_size ** 2,
    # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
    P2=32 * 3 * window_size ** 2,
    disp12MaxDiff=1,
    uniquenessRatio=15,
    speckleWindowSize=0,
    speckleRange=2,
    preFilterCap=63,
    mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
    )
    right_matcher = cv2.ximgproc.createRightMatcher(left_matcher)

    # FILTER Parameters
    lmbda = 80000
    sigma = 1.2
    visual_multiplier = 1.0

    # Weighted least squares filter to fill sparse (unpopulated) areas of the disparity map
    # by aligning the images edges and propagating disparity values from high- to low-confidence regions
    wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
    wls_filter.setLambda(lmbda)
    wls_filter.setSigmaColor(sigma)

    # Get depth information/disparity map using SGBM
    displ = left_matcher.compute(imgL, imgR) # .astype(np.float32)/16
    dispr = right_matcher.compute(imgR, imgL) # .astype(np.float32)/16
    displ = np.int16(displ)
    dispr = np.int16(dispr)

    filteredImg = wls_filter.filter(displ, imgL, None, dispr) # important to put "imgL" here!!!
    filteredImg = cv2.normalize(src=filteredImg, dst=filteredImg, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX);
    filteredImg = np.uint8(filteredImg)

    # Calculate 3D point cloud
    points = cv2.reprojectImageTo3D(filteredImg,disparityToDepthMap) / 420 # needs to be divided by 420 to obtain metric values (80 without normalization)
    print('...shape of the pointcloud:', pointCloud.shape)

    cv2.imshow('Disparity Map', filteredImg)
    cv2.waitKey()
    cv2.destroyAllWindows()


    I found this code on the Internet:
    https://github.com/opencv/opencv/blob/master/samples/python/stereo_match.py



    I want it to modify for my code
    So I added:



    ply_header = '''ply
    format ascii 1.0
    element vertex %(vert_num)d
    property float x
    property float y
    property float z
    property uchar red
    property uchar green
    property uchar blue
    end_header

    '''
    def write_ply(fn, verts, colors):
    verts = verts.reshape(-1, 3)
    colors = colors.reshape(-1, 3)
    verts = np.hstack([verts, colors])
    with open(fn, 'wb') as f:
    f.write((ply_header % dict(vert_num=len(verts))).encode('utf-8'))
    np.savetxt(f, verts, fmt='%f %f %f %d %d %d ')

    colors = cv.cvtColor(imgL, cv.COLOR_BGR2RGB)
    mask = displ> displ.min()
    out_points = points[mask]
    out_colors = colors[mask]
    out_fn = 'out.ply'
    write_ply('out.ply', out_points, out_colors)
    print('%s saved' % 'out.ply')


    but it only gives me an empty file ( if I want matlab to read it, it gives me the warning: "Warning: Not all points defined in the header could be loaded. ").



    What did I wrong?



    Sorry if it is a obvious fault, I am really a newbie into python










    share|improve this question




























      0












      0








      0








      I want to export my pointcloud from python into a .ply file, so I can analyse it in meshlab/matlab from a disparity map



      First I load the images and the calibration Matrix. Then I rectify the Images before creating the disparity map using the SBGM algorithm



      Here is my Code:



      import numpy as np
      import cv2

      #load unrectified images
      unimgR =cv2.imread("R.jpg")
      unimgL =cv2.imread("L.jpg")

      #load calibration from calibration file
      calibration = np.load(r"C:UsersXXXPycharmProjectsrectifyTest3_OpenCV_Rectified.npz", allow_pickle=False) # load variables from calibration file
      imageSize = tuple(calibration["imageSize"])
      leftMatrix = calibration["leftMatrix"]
      leftDist = calibration["leftDist"]
      leftMapX = calibration["leftMapX"]
      leftMapY = calibration["leftMapY"]
      leftROI = tuple(calibration["leftROI"])
      rightMatrix = calibration["rightMatrix"]
      rightDist = calibration["rightDist"]
      rightMapX = calibration["rightMapX"]
      rightMapY = calibration["rightMapY"]
      rightROI = tuple(calibration["rightROI"])
      disparityToDepthMap = calibration["disparityToDepthMap"]

      # Rectify images (including monocular undistortion)
      imgL = cv2.remap(unimgL, leftMapX, leftMapY, cv2.INTER_LINEAR)
      imgR = cv2.remap(unimgR, rightMapX, rightMapY, cv2.INTER_LINEAR)

      # SGBM Parameters
      window_size = 15 # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
      left_matcher = cv2.StereoSGBM_create(
      minDisparity=0,
      numDisparities=160, # max_disp has to be dividable by 16 f. E. HH 192, 256
      blockSize=5,
      P1=8 * 3 * window_size ** 2,
      # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
      P2=32 * 3 * window_size ** 2,
      disp12MaxDiff=1,
      uniquenessRatio=15,
      speckleWindowSize=0,
      speckleRange=2,
      preFilterCap=63,
      mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
      )
      right_matcher = cv2.ximgproc.createRightMatcher(left_matcher)

      # FILTER Parameters
      lmbda = 80000
      sigma = 1.2
      visual_multiplier = 1.0

      # Weighted least squares filter to fill sparse (unpopulated) areas of the disparity map
      # by aligning the images edges and propagating disparity values from high- to low-confidence regions
      wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
      wls_filter.setLambda(lmbda)
      wls_filter.setSigmaColor(sigma)

      # Get depth information/disparity map using SGBM
      displ = left_matcher.compute(imgL, imgR) # .astype(np.float32)/16
      dispr = right_matcher.compute(imgR, imgL) # .astype(np.float32)/16
      displ = np.int16(displ)
      dispr = np.int16(dispr)

      filteredImg = wls_filter.filter(displ, imgL, None, dispr) # important to put "imgL" here!!!
      filteredImg = cv2.normalize(src=filteredImg, dst=filteredImg, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX);
      filteredImg = np.uint8(filteredImg)

      # Calculate 3D point cloud
      points = cv2.reprojectImageTo3D(filteredImg,disparityToDepthMap) / 420 # needs to be divided by 420 to obtain metric values (80 without normalization)
      print('...shape of the pointcloud:', pointCloud.shape)

      cv2.imshow('Disparity Map', filteredImg)
      cv2.waitKey()
      cv2.destroyAllWindows()


      I found this code on the Internet:
      https://github.com/opencv/opencv/blob/master/samples/python/stereo_match.py



      I want it to modify for my code
      So I added:



      ply_header = '''ply
      format ascii 1.0
      element vertex %(vert_num)d
      property float x
      property float y
      property float z
      property uchar red
      property uchar green
      property uchar blue
      end_header

      '''
      def write_ply(fn, verts, colors):
      verts = verts.reshape(-1, 3)
      colors = colors.reshape(-1, 3)
      verts = np.hstack([verts, colors])
      with open(fn, 'wb') as f:
      f.write((ply_header % dict(vert_num=len(verts))).encode('utf-8'))
      np.savetxt(f, verts, fmt='%f %f %f %d %d %d ')

      colors = cv.cvtColor(imgL, cv.COLOR_BGR2RGB)
      mask = displ> displ.min()
      out_points = points[mask]
      out_colors = colors[mask]
      out_fn = 'out.ply'
      write_ply('out.ply', out_points, out_colors)
      print('%s saved' % 'out.ply')


      but it only gives me an empty file ( if I want matlab to read it, it gives me the warning: "Warning: Not all points defined in the header could be loaded. ").



      What did I wrong?



      Sorry if it is a obvious fault, I am really a newbie into python










      share|improve this question
















      I want to export my pointcloud from python into a .ply file, so I can analyse it in meshlab/matlab from a disparity map



      First I load the images and the calibration Matrix. Then I rectify the Images before creating the disparity map using the SBGM algorithm



      Here is my Code:



      import numpy as np
      import cv2

      #load unrectified images
      unimgR =cv2.imread("R.jpg")
      unimgL =cv2.imread("L.jpg")

      #load calibration from calibration file
      calibration = np.load(r"C:UsersXXXPycharmProjectsrectifyTest3_OpenCV_Rectified.npz", allow_pickle=False) # load variables from calibration file
      imageSize = tuple(calibration["imageSize"])
      leftMatrix = calibration["leftMatrix"]
      leftDist = calibration["leftDist"]
      leftMapX = calibration["leftMapX"]
      leftMapY = calibration["leftMapY"]
      leftROI = tuple(calibration["leftROI"])
      rightMatrix = calibration["rightMatrix"]
      rightDist = calibration["rightDist"]
      rightMapX = calibration["rightMapX"]
      rightMapY = calibration["rightMapY"]
      rightROI = tuple(calibration["rightROI"])
      disparityToDepthMap = calibration["disparityToDepthMap"]

      # Rectify images (including monocular undistortion)
      imgL = cv2.remap(unimgL, leftMapX, leftMapY, cv2.INTER_LINEAR)
      imgR = cv2.remap(unimgR, rightMapX, rightMapY, cv2.INTER_LINEAR)

      # SGBM Parameters
      window_size = 15 # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
      left_matcher = cv2.StereoSGBM_create(
      minDisparity=0,
      numDisparities=160, # max_disp has to be dividable by 16 f. E. HH 192, 256
      blockSize=5,
      P1=8 * 3 * window_size ** 2,
      # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
      P2=32 * 3 * window_size ** 2,
      disp12MaxDiff=1,
      uniquenessRatio=15,
      speckleWindowSize=0,
      speckleRange=2,
      preFilterCap=63,
      mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
      )
      right_matcher = cv2.ximgproc.createRightMatcher(left_matcher)

      # FILTER Parameters
      lmbda = 80000
      sigma = 1.2
      visual_multiplier = 1.0

      # Weighted least squares filter to fill sparse (unpopulated) areas of the disparity map
      # by aligning the images edges and propagating disparity values from high- to low-confidence regions
      wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
      wls_filter.setLambda(lmbda)
      wls_filter.setSigmaColor(sigma)

      # Get depth information/disparity map using SGBM
      displ = left_matcher.compute(imgL, imgR) # .astype(np.float32)/16
      dispr = right_matcher.compute(imgR, imgL) # .astype(np.float32)/16
      displ = np.int16(displ)
      dispr = np.int16(dispr)

      filteredImg = wls_filter.filter(displ, imgL, None, dispr) # important to put "imgL" here!!!
      filteredImg = cv2.normalize(src=filteredImg, dst=filteredImg, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX);
      filteredImg = np.uint8(filteredImg)

      # Calculate 3D point cloud
      points = cv2.reprojectImageTo3D(filteredImg,disparityToDepthMap) / 420 # needs to be divided by 420 to obtain metric values (80 without normalization)
      print('...shape of the pointcloud:', pointCloud.shape)

      cv2.imshow('Disparity Map', filteredImg)
      cv2.waitKey()
      cv2.destroyAllWindows()


      I found this code on the Internet:
      https://github.com/opencv/opencv/blob/master/samples/python/stereo_match.py



      I want it to modify for my code
      So I added:



      ply_header = '''ply
      format ascii 1.0
      element vertex %(vert_num)d
      property float x
      property float y
      property float z
      property uchar red
      property uchar green
      property uchar blue
      end_header

      '''
      def write_ply(fn, verts, colors):
      verts = verts.reshape(-1, 3)
      colors = colors.reshape(-1, 3)
      verts = np.hstack([verts, colors])
      with open(fn, 'wb') as f:
      f.write((ply_header % dict(vert_num=len(verts))).encode('utf-8'))
      np.savetxt(f, verts, fmt='%f %f %f %d %d %d ')

      colors = cv.cvtColor(imgL, cv.COLOR_BGR2RGB)
      mask = displ> displ.min()
      out_points = points[mask]
      out_colors = colors[mask]
      out_fn = 'out.ply'
      write_ply('out.ply', out_points, out_colors)
      print('%s saved' % 'out.ply')


      but it only gives me an empty file ( if I want matlab to read it, it gives me the warning: "Warning: Not all points defined in the header could be loaded. ").



      What did I wrong?



      Sorry if it is a obvious fault, I am really a newbie into python







      python opencv ply-file-format






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 27 at 17:29









      rici

      165k22 gold badges149 silver badges215 bronze badges




      165k22 gold badges149 silver badges215 bronze badges










      asked Mar 27 at 15:27









      hajohajo

      221 silver badge8 bronze badges




      221 silver badge8 bronze badges

























          0






          active

          oldest

          votes










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55380892%2fexporting-pointclouds-from-python-to-ply-file-why-is-the-file-empty%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes




          Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.







          Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55380892%2fexporting-pointclouds-from-python-to-ply-file-why-is-the-file-empty%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript