Created
September 22, 2018 06:34
-
-
Save hzxie/20ff7816e38a5382a54f157a9d629bae to your computer and use it in GitHub Desktop.
Convert Point Cloud to Voxels
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
import pandas as pd | |
from pyntcloud import PyntCloud | |
import binvox_rw | |
cloud = PyntCloud.from_file("test/00000.txt", | |
sep=" ", | |
header=0, | |
names=["x","y","z"]) | |
# cloud.plot(mesh=True, backend="threejs") | |
voxelgrid_id = cloud.add_structure("voxelgrid", n_x=32, n_y=32, n_z=32) | |
voxelgrid = cloud.structures[voxelgrid_id] | |
# voxelgrid.plot(d=3, mode="density", cmap="hsv") | |
x_cords = voxelgrid.voxel_x | |
y_cords = voxelgrid.voxel_y | |
z_cords = voxelgrid.voxel_z | |
voxel = np.zeros((32, 32, 32)).astype(np.bool) | |
for x, y, z in zip(x_cords, y_cords, z_cords): | |
voxel[x][y][z] = True | |
with open("test/00000.binvox", 'wb') as f: | |
v = binvox_rw.Voxels(voxel, (32, 32, 32), (0, 0, 0), 1, 'xyz') | |
v.write(f) |
@sunnyHelen
x, y, z are the coordinates of the points.
Running this gives me the following error:
Traceback (most recent call last):
File "voxel.py", line 11, in <module>
names=["x","y","z"])
File "/usr/local/lib/python3.7/site-packages/pyntcloud/core_class.py", line 130, in from_file
return cls(**FROM_FILE[ext](filename, **kwargs))
TypeError: read_ply() got an unexpected keyword argument 'sep'
After removing the sep keyword, I get the following error:
traceback (most recent call last):
file "voxel.py", line 10, in <module>
names=["x","y","z"])
file "/usr/local/lib/python3.7/site-packages/pyntcloud/core_class.py", line 130, in from_file
return cls(**from_file[ext](filename, **kwargs))
typeerror: read_ply() got an unexpected keyword argument 'header'
After removing the header keyword argument, I get the following error:
Traceback (most recent call last):
File "voxel.py", line 9, in <module>
names=["x","y","z"])
File "/usr/local/lib/python3.7/site-packages/pyntcloud/core_class.py", line 130, in from_file
return cls(**FROM_FILE[ext](filename, **kwargs))
TypeError: read_ply() got an unexpected keyword argument 'names'
After removing the names argument, I get this error:
Traceback (most recent call last):
File "voxel.py", line 28, in <module>
v.write(f)
File "/Users/prikshetsharma/Documents/clotorch/src/clotorch/flight/binvox_rw.py", line 94, in write
write(self, fp)
File "/Users/prikshetsharma/Documents/clotorch/src/clotorch/flight/binvox_rw.py", line 229, in write
fp.write('#binvox 1\n')
TypeError: a bytes-like object is required, not 'str'
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, thanks for your code. I want to convert my points cloud to voxels. Can I ask what's the format of the file you need to read ? And what's the meaning of the voxelgrid's parameters, n_x, n_y, and n_z.