title: Convertion of .ply format to .pcd format
body: <p>I've a .ply format model and trying to create a .pcd file one. After checking how .pcd format should look like and writing some code to convert it to .pcd format, my results are that the model is black colored only, instead of multi-colored like the .ply format model.</p>
  
  <p>In the .ply format there are 7 parameters in every point line (x,y,z,r,g,b,a) and on .pcd one it should be (x y z rgb). I'm not sure how to evaluate the rgb from the .ply file.</p>
  
  <p><strong>Here's some of my .ply file data:</strong></p>
  
  <pre><code>ply
  format ascii 1.0
  comment VCGLIB generated
  element vertex 130474
  property float x
  property float y
  property float z
  property uchar red
  property uchar green
  property uchar blue
  property uchar alpha
  element face 0
  property list uchar int vertex_indices
  end_header
  169.345 0.00190678 -356.222 128 138 80 255 
  170.668 0.00202459 -355.459 58 36 16 255 
  170.6 0.00285877 -355.877 59 46 45 255 
  170.307 0.00326565 -354.98 149 107 81 255 
  170.581 0.00329066 -355.646 61 38 28 255 
  </code></pre>
  
  <p><strong>And some of the .pcd file data after using the code:</strong></p>
  
  <pre><code># .PCD v.7 - Point Cloud Data file format
  VERSION .7
  FIELDS x y z rgb
  SIZE 4 4 4 1
  TYPE F F F F
  COUNT 1 1 1 1
  WIDTH 130474
  HEIGHT 1
  VIEWPOINT 0 0 0 1 0 0 0
  POINTS 130474
  DATA ascii
  169.345 0.00190678 -356.222 128
  170.668 0.00202459 -355.459 58
  170.6 0.00285877 -355.877 59
  </code></pre>
  
  <p><strong>Here's how the .pcd should look like (found in point cloud website)</strong></p>
  
  <pre><code># .PCD v.7 - Point Cloud Data file format
  VERSION .7
  FIELDS x y z rgb
  SIZE 4 4 4 4
  TYPE F F F F
  COUNT 1 1 1 1
  WIDTH 213
  HEIGHT 1
  VIEWPOINT 0 0 0 1 0 0 0
  POINTS 213
  DATA ascii
  0.93773 0.33763 0 4.2108e+06
  0.90805 0.35641 0 4.2108e+06
  0.81915 0.32 0 4.2108e+06
  </code></pre>
  
  <p><strong>Question:</strong> What are these values: 4.2108e+06 as the 4th parameter and how can I generate it through the .ply format?</p>
  
  <p><strong>Here's the code I'm currently using on PyCharm:</strong></p>
  
  <pre><code>#!/usr/bin/env python
  import sys
  import os
  
  header = "# .PCD v.7 - Point Cloud Data file format\n\
  VERSION .7\n\
  FIELDS x y z rgb\n\
  SIZE 4 4 4 1\n\
  TYPE F F F F\n\
  COUNT 1 1 1 1\n\
  WIDTH XXXX\n\
  HEIGHT 1\n\
  VIEWPOINT 0 0 0 1 0 0 0\n\
  POINTS XXXX\n\
  DATA ascii"
  
  def convertionOfPlyToPcd(ply_file, pcd_file):
      input_file = open(ply_file)
      out = pcd_file
      output = open(out, 'w')
      write_points = False
      points_counter = 0
      nr_points = 0
      for s in input_file.readlines():
          if s.find("element vertex") != -1:
              nr_points = int(s.split(" ")[2].rstrip().lstrip())
              new_header = header.replace("XXXX", str(nr_points))
              output.write(new_header)
              output.write("\n")
          if s.find("end_header") != -1:
              write_points = True
              continue
          if write_points and points_counter &lt; nr_points:
              points_counter = points_counter + 1
              output.write(" ".join(s.split(" ", 4)[:4]))
              output.write("\n")
      input_file.close()
      output.close()
  
  if __name__ == "__main__":
      # We request the path to the script, if it's not found - exit
      if sys.argv[0] == "":
          sys.exit(1)
      # PLY file - We convert this format to PCD format
      ply_file = sys.argv[1]
      # PCD file - generated from PLY file
      pcd_file = sys.argv[2]
  
      # Function which converts .ply format files to .pcd files
      convertionOfPlyToPcd(ply_file, pcd_file)
  </code></pre>
  
  <p><strong>With these changes to the code the results are white cloud points instead of black:</strong></p>
  
  <pre><code>header = "# .PCD v.7 - Point Cloud Data file format\n\
  VERSION .7\n\
  FIELDS x y z\n\
  SIZE 4 4 4\n\
  TYPE F F F \n\
  COUNT 1 1 1\n\
  WIDTH XXXX\n\
  HEIGHT 1\n\
  VIEWPOINT 0 0 0 1 0 0 0\n\
  POINTS XXXX\n\
  DATA ascii"
  </code></pre>
  
  <p><strong>Software used for comparison: CloudCompare</strong></p>
  
  <p><strong>Desired result:</strong>
  <a href="https://i.stack.imgur.com/9LsF8.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9LsF8.jpg" alt="enter image description here"></a></p>
  
  <p><strong>Current result:</strong>
  <a href="https://i.stack.imgur.com/gHS3q.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gHS3q.jpg" alt="enter image description here"></a></p>