Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
mesh = o3d.io.read_triangle_mesh("../../TestData/knot.ply")
print(mesh)
print(np.asarray(mesh.vertices))
print(np.asarray(mesh.triangles))
print("")
print("Try to render a mesh with normals (exist: " +
str(mesh.has_vertex_normals()) + ") and colors (exist: " +
str(mesh.has_vertex_colors()) + ")")
o3d.visualization.draw_geometries([mesh])
print("A mesh with no normals and no colors does not seem good.")
print("Computing normal and rendering it.")
mesh.compute_vertex_normals()
print(np.asarray(mesh.triangle_normals))
o3d.visualization.draw_geometries([mesh])
print("We make a partial mesh of only the first half triangles.")
mesh1 = copy.deepcopy(mesh)
mesh1.triangles = o3d.utility.Vector3iVector(
np.asarray(mesh1.triangles)[:len(mesh1.triangles) // 2, :])
mesh1.triangle_normals = o3d.utility.Vector3dVector(
np.asarray(mesh1.triangle_normals)[:len(mesh1.triangle_normals) //
2, :])
print(mesh1.triangles)
o3d.visualization.draw_geometries([mesh1])
print("Painting the mesh")
mesh1.paint_uniform_color([1, 0.706, 0])
o3d.visualization.draw_geometries([mesh1])
def draw_registration_result_original_color(source, target, transformation):
source_temp = copy.deepcopy(source)
source_temp.transform(transformation)
o3d.visualization.draw_geometries([source_temp, target])
pcd.paint_uniform_color([0.5, 0.5, 0.5])
pcd_tree = o3d.geometry.KDTreeFlann(pcd)
print("Paint the 1500th point red.")
pcd.colors[1500] = [1, 0, 0]
print("Find its 200 nearest neighbors, paint blue.")
[k, idx, _] = pcd_tree.search_knn_vector_3d(pcd.points[1500], 200)
np.asarray(pcd.colors)[idx[1:], :] = [0, 0, 1]
print("Find its neighbors with distance less than 0.2, paint green.")
[k, idx, _] = pcd_tree.search_radius_vector_3d(pcd.points[1500], 0.2)
np.asarray(pcd.colors)[idx[1:], :] = [0, 1, 0]
print("Visualize the point cloud.")
o3d.visualization.draw_geometries([pcd])
print("")
def draw_registration_result(source, target, transformation):
source_temp = copy.deepcopy(source)
target_temp = copy.deepcopy(target)
source_temp.paint_uniform_color([1, 0.706, 0])
target_temp.paint_uniform_color([0, 0.651, 0.929])
source_temp.transform(transformation)
o3d.visualization.draw_geometries([source_temp, target_temp])
o3d.visualization.draw_geometries([mesh, bbox])
o3d.visualization.draw_geometries([mesh.crop(bbox), bbox])
pcd = mesh.sample_points_uniformly(500000)
bbox = o3d.geometry.AxisAlignedBoundingBox(min_bound=(-30, 0, -10),
max_bound=(10, 20, 10))
o3d.visualization.draw_geometries([pcd, bbox])
o3d.visualization.draw_geometries([pcd.crop(bbox), bbox])
bbox = o3d.geometry.OrientedBoundingBox(
center=(-10, 10, 0),
R=bbox.get_rotation_matrix_from_xyz((2, 1, 0)),
extent=(40, 20, 20),
)
o3d.visualization.draw_geometries([pcd, bbox])
o3d.visualization.draw_geometries([pcd.crop(bbox), bbox])
def draw_registration_result(source, target, transformation):
source_temp = copy.deepcopy(source)
target_temp = copy.deepcopy(target)
source_temp.paint_uniform_color([1, 0.706, 0])
target_temp.paint_uniform_color([0, 0.651, 0.929])
source_temp.transform(transformation)
o3d.visualization.draw_geometries([source_temp, target_temp])
print(
"Convet a numpy image to o3d.geometry.Image and show it with DrawGeomtries()."
)
y = mpimg.imread("../../TestData/lena_color.jpg")
print(y.shape)
yy = o3d.geometry.Image(y)
print(yy)
o3d.visualization.draw_geometries([yy])
print("Render a channel of the previous image.")
z = np.array(y[:, :, 1])
print(z.shape)
print(z.strides)
zz = o3d.geometry.Image(z)
print(zz)
o3d.visualization.draw_geometries([zz])
print("Write the previous image to file then load it with matplotlib.")
o3d.io.write_image("test.jpg", zz, quality=100)
zzz = mpimg.imread("test.jpg")
plt.imshow(zzz)
plt.show()
print("Testing basic image processing module.")
im_raw = mpimg.imread("../../TestData/lena_color.jpg")
im = o3d.geometry.Image(im_raw)
im_g3 = im.filter(o3d.geometry.ImageFilterType.Gaussian3)
im_g5 = im.filter(o3d.geometry.ImageFilterType.Gaussian5)
im_g7 = im.filter(o3d.geometry.ImageFilterType.Gaussian7)
im_gaussian = [im, im_g3, im_g5, im_g7]
pyramid_levels = 4
pyramid_with_gaussian_filter = True
yield meshes.armadillo()
if __name__ == "__main__":
for mesh in mesh_generator():
mesh.compute_vertex_normals()
hull, _ = mesh.compute_convex_hull()
hull_ls = o3d.geometry.LineSet.create_from_triangle_mesh(hull)
hull_ls.paint_uniform_color((1, 0, 0))
o3d.visualization.draw_geometries([mesh, hull_ls])
pcl = mesh.sample_points_poisson_disk(number_of_points=2000)
hull, _ = pcl.compute_convex_hull()
hull_ls = o3d.geometry.LineSet.create_from_triangle_mesh(hull)
hull_ls.paint_uniform_color((1, 0, 0))
o3d.visualization.draw_geometries([pcl, hull_ls])
print("Recompute the normal of the downsampled point cloud")
downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(
radius=0.1, max_nn=30))
o3d.visualization.draw_geometries([downpcd])
print("Print a normal vector of the 0th point")
print(downpcd.normals[0])
print("Print the normal vectors of the first 10 points")
print(np.asarray(downpcd.normals)[:10, :])
print("")
print("Load a polygon volume and use it to crop the original point cloud")
vol = o3d.visualization.read_selection_polygon_volume(
"../../TestData/Crop/cropped.json")
chair = vol.crop_point_cloud(pcd)
o3d.visualization.draw_geometries([chair])
print("")
print("Paint chair")
chair.paint_uniform_color([1, 0.706, 0])
o3d.visualization.draw_geometries([chair])
print("")