Open3D のインストール,Python のプログラム例
- 間引く(処理性能のアップのため)
- 法線を求める(ポリゴンのデータに変換するとき,ポリゴン同士が滑らかになるようにするための技術)
- 空間の範囲を指定して抜き出す
- 色を付ける
- オブジェクトに分ける
- 平面(壁)を抜きだす
- ポリゴンのデータに変換する(Blender などに読み込めるように変換できます)
- 点の密度を求める
【目次】
利用条件などは利用者において確認してください
- Github の Open3D の Web ページ: https://github.com/isl-org/Open3D
- Open3D の Web ページ: http://www.open3d.org/
- Open3D の 公式のドキュメント: http://www.open3d.org/docs/release/
前準備
Build Tools for Visual Studio 2026 のインストール(Windows 上)
Build Tools for Visual Studio は,Visual Studio の IDE を含まない C/C++ コンパイラ,ライブラリ,ビルドツール等のコマンドライン向け開発ツールセットである。
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
REM VC++ ランタイム
winget install --scope machine --accept-source-agreements --accept-package-agreements --silent --id Microsoft.VCRedist.2015+.x64
REM Build Tools + Desktop development with C++(VCTools)+ 追加コンポーネント(一括)
winget install --id Microsoft.VisualStudio.BuildTools ^
--override "--passive --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
--add で追加されるコンポーネント
上記のコマンドでは,まず Build Tools 本体と Visual C++ 再頒布可能パッケージをインストールし,次に setup.exe を用いて以下のコンポーネントを追加している。
VCTools:C++ デスクトップ開発ワークロード(--includeRecommendedにより、MSVC コンパイラ、C++ AddressSanitizer、vcpkg、CMake ツール、Windows 11 SDK 等の推奨コンポーネントが含まれる)VC.Llvm.Clang:Windows 向け C++ Clang コンパイラClangCL:clang-cl ツールセットを含むコンポーネントグループ(MSBuild から Clang を使用するために必要)VC.CMake.Project:Windows 向け C++ CMake ツールWindows11SDK.26100:Windows 11 SDK(ビルド 10.0.26100)
インストール完了の確認
winget list Microsoft.VisualStudio.BuildTools
上記以外の追加のコンポーネントが必要になった場合は Visual Studio Installer で個別にインストールできる。
Visual Studio の機能を必要とする場合は、追加インストールできる。
Python 3.12 のインストール
インストール済みの場合は実行不要。
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要である。
REM Python 3.12 をシステム領域にインストール
winget install --scope machine --id Python.Python.3.12 -e --silent --accept-source-agreements --accept-package-agreements
REM Python のパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON_SCRIPTS_PATH=C:\Program Files\Python312\Scripts"
if exist "%PYTHON_PATH%" setx PYTHON_PATH "%PYTHON_PATH%" /M >nul
if exist "%PYTHON_SCRIPTS_PATH%" setx PYTHON_SCRIPTS_PATH "%PYTHON_SCRIPTS_PATH%" /M >nul
for /f "skip=2 tokens=2*" %a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set "SYSTEM_PATH=%b"
echo "%SYSTEM_PATH%" | find /i "%PYTHON_PATH%" >nul
if errorlevel 1 setx PATH "%PYTHON_PATH%;%PYTHON_SCRIPTS_PATH%;%SYSTEM_PATH%" /M >nul
【関連する外部サイト】
【サイト内の関連ページ】
- Python ガイド:別ページで説明 »
Git のインストール(Windows 上)
Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.
【サイト内の関連ページ】 Windows での Git のインストール: 別ページ »で説明
【関連する外部ページ】 Git の公式ページ: https://git-scm.com/
CMakeのインストール
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要となる。
REM CMake をシステム領域にインストール
winget install --scope machine --id Kitware.CMake -e --silent
REM CMake のパス設定
set "GMAKE_PATH=C:\Program Files\CMake\bin"
if exist "%GMAKE_PATH%" (
echo "%PATH%" | find /i "%GMAKE_PATH%" >nul
if errorlevel 1 setx PATH "%PATH%;%GMAKE_PATH%" /M >nul
)
Open3D のインストール(Windows 上)
http://www.open3d.org/docs/release/compilation.html に記載の手順による.
Windows での Open3D のインストール
- 以下の手順を管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー →
cmdと入力 → 右クリック → 「管理者として実行」)。 - pip を用いて,Open3D のインストール
python -m pip install -U open3d - バージョンの確認
次のコマンドを実行.「Version」の右に表示されるバージョンを確認.
python -m pip show open3d
関連ファイルのインストールを行いたいので,下に書いた手順を進める.
- Open3D 関連ファイルのインストール
エラーを回避するために「/utf-8」を設定.
python -m pip install -U --ignore-installed numpy scikit-image cd /d c:%HOMEPATH% rmdir /s /q Open3D git clone --recursive https://github.com/isl-org/Open3D cd Open3D del CMakeCache.txt rmdir /s /q CMakeFiles rmdir /s /q build mkdir build cmake .. -A x64 -T host=x64 ^ -DCMAKE_C_FLAGS="/DWIN32 /D_WINDOWS /W0 /utf-8" ^ -DCMAKE_CXX_FLAGS="/DWIN32 /D_WINDOWS /GR /EHsc /W0 /utf-8" ^ -DCMAKE_INSTALL_PREFIX="c:/Open3D" cmake --build . --config Release --target ALL_BUILD cmake --build . --config Release --target INSTALL - 確認のため Open3DViewer を起動してみる.
起動ができれば OK とする.
%LOCALAPPDATA%\Open3D\bin\Open3D\Release\Open3DViewer.exe
- Open3D-ML 関連ファイルのインストール
次のコマンドを実行する.
cd /d c:%HOMEPATH% rmdir /s /q Open3D-ML git clone --recursive https://github.com/isl-org/Open3D-ML cd Open3D-ML python -m pip install -r requirements.txt python -m pip install -r requirements-torch.txt
Ubuntu での Open3D のインストール
- 端末を開く
- pip を用いて,Open3D のインストール
sudo pip3 install -U open3d - バージョンの確認
次のコマンドを実行.「Version」の右に表示されるバージョンを確認.
pip3 show open3d
以降,関連ファイルのインストールを行いたいので,下に書いた手順を進める.
- cmake のインストール: 別ページ で説明している.
- Open3D 関連ファイルのインストール
次のコマンドを実行する.
git clone では「-b v0.13.0」のようにバージョンを指定する.このバージョンは, さきほど「pip3 show open3d」で確認したバージョンに一致させること.
# パッケージリストの情報を更新 sudo apt update sudo apt -y install build-essential gcc g++ make sudo apt -y install git sudo pip3 install -U numpy scikit-image sudo mkdir /usr/local cd /usr/local sudo rm -rf Open3D sudo git clone -b v0.13.0 --recursive https://github.com/isl-org/Open3D sudo chown -R $USER Open3D cd Open3D git switch - yes | bash util/install_deps_ubuntu.sh rm -f CMakeCache.txt /usr/local/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local . make sudo make install - NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.5,NVIDIA cuDNN v8 のインストール: 別ページ »で説明
- Open3D-ML 関連ファイルのインストール
次のコマンドを実行する.
git clone では「-b r0.13.0」のようにバージョンを指定する.このバージョンは, さきほど「pip3 show open3d」で確認したバージョンに一致させること.
cd /usr/local sudo rm -rf Open3D-ML sudo git clone --recursive -b r0.13.0 https://github.com/isl-org/Open3D-ML sudo chown -R $USER Open3D sudo chown -R $USER Open3D-ML cd Open3D-ML git switch - sudo pip3 install -r requirements.txt sudo pip3 install -r requirements-tensorflow.txt sudo pip3 install -r requirements-torch.txt sudo pip3 install -U numpy chumpy json-tricks munkres xtcocotools yapf cd ../Open3D rm -f CMakeCache.txt /usr/local/bin/cmake \ -DBUILD_PYTORCH_OPS=ON \ -DBUILD_TENSORFLOW_OPS=ON \ -DBUNDLE_OPEN3D_ML=ON \ -DOPEN3D_ML_ROOT=/usr/local/Open3D-ML \ -DGLIBCXX_USE_CXX11_ABI=OFF \ -DCMAKE_INSTALL_PREFIX=/usr/local . make sudo make install
Open3D に付属の Python のプログラムを動かしてみる(Python を使用)
- カレントディレクトリの移動
Windows では 「cd /d c:%HOMEPATH%\Open3D\docs\jupyter」
Ubuntu では 「cd /usr/local/Open3D/docs/jupyter」
- Python プログラムの実行
pointcloud.ipynb に記載の Python プログラムを実行
- 準備
import open3d as o3d import numpy as np import matplotlib.pyplot as plt import copy import os import sys # only needed for tutorial, monkey patches visualization sys.path.append('..') import open3d_tutorial as o3dtut # change to True if you want to interact with the visualization windows o3dtut.interactive = not "CI" in os.environWindows での実行結果を示す.
- 表示
print("Load a ply point cloud, print it, and render it") pcd = o3d.io.read_point_cloud("../../examples/test_data/fragment.ply") print(pcd) print(np.asarray(pcd.points)) o3d.visualization.draw_geometries([pcd], zoom=0.3412, front=[0.4257, -0.2125, -0.8795], lookat=[2.6172, 2.0475, 1.532], up=[-0.0694, -0.9768, 0.2024])Windows での実行結果を示す.
- ダウンサンプリング
print("Downsample the point cloud with a voxel of 0.05") downpcd = pcd.voxel_down_sample(voxel_size=0.05) o3d.visualization.draw_geometries([downpcd], zoom=0.3412, front=[0.4257, -0.2125, -0.8795], lookat=[2.6172, 2.0475, 1.532], up=[-0.0694, -0.9768, 0.2024])Windows での実行結果を示す.
- Convex hull
bunny = o3d.data.BunnyMesh() mesh = o3d.io.read_triangle_mesh(bunny.path) mesh.compute_vertex_normals() 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]) pcl = o3dtut.get_bunny_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])Windows での実行結果を示す.
- DBSCAN クラスタリング
pcd = o3d.io.read_point_cloud("../../examples/test_data/fragment.ply") with o3d.utility.VerbosityContextManager( o3d.utility.VerbosityLevel.Debug) as cm: labels = np.array( pcd.cluster_dbscan(eps=0.02, min_points=10, print_progress=True)) max_label = labels.max() print(f"point cloud has {max_label + 1} clusters") colors = plt.get_cmap("tab20")(labels / (max_label if max_label > 0 else 1)) colors[labels < 0] = 0 pcd.colors = o3d.utility.Vector3dVector(colors[:, :3]) o3d.visualization.draw_geometries([pcd], zoom=0.455, front=[-0.4999, -0.1659, -0.8499], lookat=[2.1813, 2.0619, 2.0999], up=[0.1204, -0.9852, 0.1215])Windows での実行結果を示す.
- 平面のセグメンテーション
pcd = o3d.io.read_point_cloud("../../examples/test_data/fragment.pcd") plane_model, inliers = pcd.segment_plane(distance_threshold=0.01, ransac_n=3, num_iterations=1000) [a, b, c, d] = plane_model print(f"Plane equation: {a:.2f}x + {b:.2f}y + {c:.2f}z + {d:.2f} = 0") inlier_cloud = pcd.select_by_index(inliers) inlier_cloud.paint_uniform_color([1.0, 0, 0]) outlier_cloud = pcd.select_by_index(inliers, invert=True) o3d.visualization.draw_geometries([inlier_cloud, outlier_cloud], zoom=0.8, front=[-0.4999, -0.1659, -0.8499], lookat=[2.1813, 2.0619, 2.0999], up=[0.1204, -0.9852, 0.1215])Windows での実行結果を示す.
- 準備