Learning Open3D→Tutorial→基礎編→File IO
# examples/Python/Basic/file_io.py
import open3d as o3d
if __name__ == "__main__":
# (1)Point Cloud
print("Testing IO for point cloud ...")
pcd = o3d.io.read_point_cloud("../../TestData/fragment.pcd")
print(pcd)
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)
# (2) Mesh
print("Testing IO for meshes ...")
mesh = o3d.io.read_triangle_mesh("../../TestData/knot.ply")
print(mesh)
o3d.io.write_triangle_mesh("copy_of_knot.ply", mesh)
# (3) Textured Mesh
print("Testing IO for textured meshes ...")
textured_mesh = o3d.io.read_triangle_mesh("../../TestData/crate/crate.obj")
print(textured_mesh)
o3d.io.write_triangle_mesh("copy_of_crate.obj",
textured_mesh,
write_triangle_uvs=True)
copy_textured_mesh = o3d.io.read_triangle_mesh('copy_of_crate.obj')
print(copy_textured_mesh)
# (4)Image
print("Testing IO for images ...")
img = o3d.io.read_image("../../TestData/lena_color.jpg")
print(img)
o3d.io.write_image("copy_of_lena_color.jpg", img)
ポイントクラウド(点群)ファイルの読み込み(read_point_cloud
)、書き込み(write_point_cloud
)の関数の紹介。
examples/Python/Basic/file_io.py
の最初の部分コード:
# (1)Point Cloud
print("Testing IO for meshes ...")
mesh = o3d.io.read_triangle_mesh("../../TestData/knot.ply")
print(mesh)
o3d.io.write_triangle_mesh("copy_of_knot.ply", mesh)
Testing IO for point cloud ...
geometry::PointCloud with 113662 points.
print()
関数はpcd
の内容要約の表示に使える。上記の結果表示されるメッセージは:
Testing IO for point cloud ...
PointCloud with 113662 points.
デフォルトでは、Open3Dはファイルの拡張子からファイルのタイプを推測しようとする。 以下は、サポートされているポイントクラウド(点群)・ファイルの型である:
ファイル形式 | 説明 |
---|---|
xyz | 各行が[x, y, z] となっているもの。ここでx, y, z は3D座標 |
xyzn | 各行が[x, y, z, nx, ny, nz] となっているもの。ここでnx, ny, nz は法線 |
xyzrgb | 各行が[x, y, z, r, g, b] となっているもの。ここでr, g, b は [0, 1] の範囲の浮動小数点数 |
pts | 最初の行がポイント数を表す整数で、次からの行は[x, y, z, i, r, g, b] となっているもの。ここでr, g, b は uint8 で表現されている |
ply | Polygon File形式を参照のこと。このplyファイルはポイントクラウドもメッシュも含みうる |
pcd | Point Cloud Dataを参照のこと |
次のように、ファイルの型を明示することも可能である。この場合、ファイル拡張子は無視される。
pcd = o3d.io.read_point_cloud("my_points.txt", format='xyz')
メッシュの読み込み(read_triangle_mesh
)と書き込み(write_triangle_mesh
)の関数の紹介。
examples/Python/Basic/file_io.py
の2番めの部分コード:
# (2) Mesh
print("Testing IO for meshes ...")
mesh = o3d.io.read_triangle_mesh("../../TestData/knot.ply")
print(mesh)
o3d.io.write_triangle_mesh("copy_of_knot.ply", mesh)
Testing IO for meshes ...
geometry::TriangleMesh with 1440 points and 2880 triangles.
ポイントクラウド(点群)とは異なり、メッシュは表面を定義する三角形の集まり、というデータ構造を持つ。
テクスチャのついたメッシュも扱える:
examples/Python/Basic/file_io.pyの3番目の部分コード:
# (3) Textured Mesh
print("Testing IO for textured meshes ...")
textured_mesh = o3d.io.read_triangle_mesh("../../TestData/crate/crate.obj")
print(textured_mesh)
o3d.io.write_triangle_mesh("copy_of_crate.obj",
textured_mesh,
write_triangle_uvs=True)
copy_textured_mesh = o3d.io.read_triangle_mesh('copy_of_crate.obj')
print(copy_textured_mesh)
Testing IO for textured meshes ...
geometry::TriangleMesh with 8 points and 12 triangles, and (320, 320) texture.
geometry::TriangleMesh with 8 points and 12 triangles, and (320, 320) texture.
デフォルトでは、Open3Dはファイルの拡張子からファイルのタイプを推測しようとする。 以下は、サポートされているメッシュ・ファイルの型である:
ファイル形式 | 説明 |
---|---|
ply | Polygon File形式を参照のこと。このplyファイルはポイントクラウドもメッシュも含みうる。 |
stl | StereoLithography を参照のこと |
obj | Object Fileを参照のこと |
off | Object File 形式を参照のこと |
gltf | GL Transmission 形式を参照のこと |
# Image
print("Testing IO for images ...")
img = o3d.io.read_image("../../TestData/lena_color.jpg")
print(img)
o3d.io.write_image("copy_of_lena_color.jpg", img)
Testing IO for images ...
Image of size 512x512, with 3 channels.
Use numpy.asarray to access buffer data.