Python から libpcl を使う(GitHub の davidcaron/pclpy, Python を使用)(Ubuntu 上)

目次

利用条件などは利用者において確認してください

サイト内の関連ページ

参考Webページ

謝辞:このページで使用しているソフトウェア類の作者に感謝します

前準備

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

【関連する外部サイト】

【サイト内の関連ページ】

Build Tools for Visual Studio 2022 のインストール(Windows 上)

以下のコマンドを管理者権限コマンドプロンプトで実行する (手順: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.2022.BuildTools ^
  --override "--passive --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.ComponentGroup.ClangCL --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.Windows11SDK.26100"

--add で追加されるコンポーネント

上記のコマンドでは,まず Build Tools 本体と Visual C++ 再頒布可能パッケージをインストールし,次に setup.exe を用いて以下のコンポーネントを追加している。

インストール完了の確認

winget list Microsoft.VisualStudio.2022.BuildTools

上記以外のコンポーネントが必要になった場合は Visual Studio Installer で個別にインストールできる。

Git のインストール(Windows 上)

Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.

サイト内の関連ページWindows での Git のインストール: 別ページ »で説明

関連する外部ページGit の公式ページ: https://git-scm.com/

Gitのインストール

以下のコマンドを管理者権限コマンドプロンプトで実行する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要となる。

REM Git をシステム領域にインストール

7-Zip のインストール

以下のコマンドを管理者権限コマンドプロンプトで実行する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要となる。

REM 7-Zip をシステム領域にインストール
winget install --scope machine --id 7zip.7zip -e --silent
REM 7-Zip のパス設定
set "SEVENZIP_PATH=C:\Program Files\7-Zip"
for /f "skip=2 tokens=2*" %a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set "SYSTEM_PATH=%b"
if exist "%SEVENZIP_PATH%" (
    echo "%SYSTEM_PATH%" | find /i "%SEVENZIP_PATH%" >nul
    if errorlevel 1 setx PATH "%SEVENZIP_PATH%;%SYSTEM_PATH%" /M >nul
)

libpcl 1.9.1 のインストール

davidcaron/pclpy を使いたい.次のページによれば,バージョンは 1.9.1 が指定されている.

davidcaron/pclpy の URL: https://github.com/davidcaron/pclpy

  • Windows での libpcl のインストール手順は,別ページ »で説明
  • Ubuntu の場合は,次のコマンドを実行する.
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install libboost-all-dev libeigen3-dev libvtk9-dev libflann-dev
    cd /usr/local
    sudo rm -rf pcl-pcl-1.9.1
    cd /tmp
    curl -O -L https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.9.1.tar.gz
    cd /usr/local
    sudo tar -xvzof /tmp/pcl-1.9.1.tar.gz
    sudo chown -R $USER pcl-pcl-1.9.1
    cd pcl-pcl-1.9.1
    mkdir build
    cd build
    cmake -DCMAKE_BUILD_TYPE=Release ..
    make -j2
    sudo make install
    

davidcaron/pclpy のインストール

davidcaron/pclpy の URL: https://github.com/davidcaron/pclpy
  1. インストールディレクトリを空にする
    • Windows の場合
      mkdir c:\pytools
      cd c:\pytools
      rmdir /s /q pclpy
      
    • Ubuntu の場合
      sudo mkdir /usr/local/pytools
      cd /usr/local/pytools
      sudo rm -rf pclpy
      
  2. github の davidcaron/pclpy のダウンロード
    • Windows の場合
      cd c:\pytools
      git clone --recursive https://github.com/davidcaron/pclpy
      
    • Ubuntu の場合
      cd /usr/local/pytools
      sudo git clone --recursive https://github.com/davidcaron/pclpy
      
  3. 前提パッケージのインストール
    • Windows の場合
      cd pclpy
      python -m pip install -r requirements-dev.txt
      
    • Ubuntu の場合は「sudo pip3」
      cd pclpy
      sudo apt -y install python3-pybind11 python3-inflection python3-unidecode python3-pytest
      sudo pip3 install -r requirements-dev.txt
      
  4. インストール

    Ubuntu の場合

    sudo chown -R $USER /usr/local/pytools/pclpy
    cd /usr/local/pytools/pclpy
    PYTHON=python3 bash scripts/download_pcl.sh
    PYTHON=python3 bash scripts/generate_points_and_bindings.sh
    # scripts/generate_hpp_point_types.sh
    cd generators
    PCL_REPO_PATH=/usr/local/pcl-pcl-1.9.1 PYTHONPATH=/usr/local/pytools/pclpy python3 generate_point_types.py
    cd ..
    python3 setup.py build
    sudo python3 setup.py install
    
  5. 動作確認

    https://github.com/davidcaron/pclpy/blob/master/README.md に記載の Python プログラムを実行してみる

    エラーメッセージが出なければOKとする

    import pclpy
    from pclpy import pcl
    
    point_cloud = pclpy.read("/usr/local/pclpy/tests/test_data/street.las", "PointXYZRGBA")
    mls = pcl.surface.MovingLeastSquaresOMP.PointXYZRGBA_PointNormal()
    tree = pcl.search.KdTree.PointXYZRGBA()
    mls.setSearchRadius(0.05)
    mls.setPolynomialFit(False)
    mls.setNumberOfThreads(12)
    mls.setInputCloud(point_cloud)
    mls.setSearchMethod(tree)
    mls.setComputeNormals(True)
    output = pcl.PointCloud.PointNormal()
    mls.process(output)