オプションの依存関係を使用した C++ サンプルの設定

このチュートリアルでは、CMake を使用して Zivid C++ サンプルのオプションの依存関係を設定する方法を説明します。

要件

任意要件

一部のサンプルは外部ライブラリに依存しており、特に以下のライブラリが挙げられます。

注釈

以下の手順は、以下のバージョンの依存関係でテスト済みです。

  • Visual Studio 2019 以降

  • CMake 3.24 以降

  • PCL 1.12.1

  • Eigen 3.4.0

  • OpenCV 4.7.0

他のバージョンを使用している場合、問題が発生する可能性があります。

実行したいサンプルプログラムに応じて、必要な依存関係をインストールしてください。詳細は以下の表を参照してください。

サンプルプログラム

PCL

Eigen

OpenCV

OpenCV (CUDA)

Halcon

ReadPCLVis3D

はい

CaptureWritePCLVis3D

はい

CaptureAndVisualizeNormals

はい

StitchByTransformation

はい

StitchByTransformationFromZDF

はい

StitchViaLocalPointCloudRegistration

はい

StitchContinuouslyRotatingObject

はい

StitchUsingRobotMountedCamera

はい

MaskPointCloud

はい

Capture2DAnd3D

はい

はい

ROIBoxViaCheckerboard

はい

UtilizeHandEyeCalibration

はい

PoseConversions

はい

ROIBoxViaArucoMarker

はい

CaptureUndistort2D

はい

CreateDepthMap

はい

ProjectAndFindMarker

はい

ReprojectPoints

はい

ReadProjectAndCaptureImage

はい

GammaCorrection

はい

AllocateMemoryForPointCloudData

はい

CaptureAndConvertImageWithOpenCVOnCuda

はい

TransformPointCloudViaCheckerboard

はい

TransformPointCloudViaArucoMarker

はい

CaptureHalconViaGenICam

はい

CaptureHalconViaZivid

はい

パッケージマネージャーから Eigen 3 をインストールするには、以下のコマンドを実行してください。

sudo apt install libeigen3-dev

zivid-cpp-samples で作成したビルドディレクトリに移動して、以下を実行してください。

mkdir build
cd build
cmake -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 -DUSE_OPENCV=OFF -DUSE_PCL=OFF ../source
cmake --build .

パッケージマネージャーから PCL をインストールするには、次のコマンドを実行します。

sudo apt install libpcl-dev

zivid-cpp-samples で作成したビルドディレクトリに移動して、以下を実行してください。

mkdir build
cd build
cmake -DUSE_PCL=ON -DUSE_EIGEN3=OFF -DUSE_OPENCV=OFF ../source
cmake --build .

パッケージマネージャーから OpenCV をインストールするには、次のコマンドを実行します。

sudo apt install libopencv-dev clang-tidy

zivid-cpp-samples で作成したビルドディレクトリに移動して、以下を実行してください。

mkdir build
cd build
cmake -DUSE_OPENCV=ON -DUSE_EIGEN3=OFF -DUSE_PCL=OFF ../source
cmake --build .

CUDA をインストールするには、 NVIDIA linux guide の手順に従ってください。

古いグラフィックカードでは必要な CUDA 命令がすべてサポートされていない場合があり、追加の設定が必要になります。詳細については、公式の OpenCV CUDA introduction および OpenCV contrib repository を参照してください。

警告

cmake --build . の使用中にランダムなシステムフリーズが発生する場合は、CPU コア数よりも小さい n を指定して --parallel n オプションを追加してみてください。

CUDA サポート付き OpenCV をビルドするために必要なツールをインストールするには、次のコマンドを実行します。

sudo apt install clang-tidy ninja-build cmake

CUDA サポート付きで OpenCV をビルドします。

wget https://github.com/opencv/opencv/archive/refs/tags/4.13.0.zip
unzip 4.13.0.zip -d opencv
rm 4.13.0.zip
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.13.0.zip
unzip 4.13.0.zip -d opencv
rm 4.13.0.zip
cd opencv/opencv-4.13.0
mkdir build
cd build
cmake -S .. -D WITH_CUDA=ON -G Ninja -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.13.0/modules/ -D ENABLE_CUDA_FIRST_CLASS_LANGUAGE=ON -D CUDAToolkit_ROOT=/usr/local/cuda
cmake --build .
cmake --install . --prefix local/

zivid-cpp-samples で作成したビルドディレクトリに移動し、以下を実行してください。

mkdir build
cd build
cmake -S ../source -D CMAKE_PREFIX_PATH=<path-to-opencv-build>/local/lib/cmake/opencv4 -D USE_OPENCV=ON -D USE_CUDA=ON -D USE_OPENCV_CUDA=ON -D EIGEN3_INCLUDE_DIR=/usr/include/eigen3 -D CUDAToolkit_ROOT=/usr/local/cuda -G Ninja -D CMAKE_BUILD_TYPE=Release -D CMAKE_EXPORT_COMPILE_COMMANDS=ON
cmake --build .

CUDA サンプルを実行する際は、ビルド済みの OpenCV ライブラリを LD_LIBRARY_PATH に含めてください。

export LD_LIBRARY_PATH=<path-to-opencv-build>/local/lib:$LD_LIBRARY_PATH

Download the latest stable release of Eigen from https://libeigen.gitlab.io/ and extract the folder to your desired destination. When configuring the CMake project, include Eigen to configure the samples that depend on it.

zivid-cpp-samples で作成したビルドディレクトリに移動して、以下を実行してください。

cmake -DEIGEN3_INCLUDE_DIR=<path> -DUSE_OPENCV=OFF -DUSE_PCL=OFF ../source

ここで <path> は Eigen をインストールした場所への完全なパスです。例: C:/Program Files/Eigen

CMake GUI で Add Entry をクリックして Eigen へのパスを追加します。 EIGEN3_INCLUDE_DIR を追加し、その値をフォルダを展開した場所に設定します。

Eigen 3 のインクルードディレクトリを入力できる CMake GUI のスクリーンショット。

USE_EIGEN3 チェックボックスがオンになっていることを確認し、 Configure をクリックします。次に GenerateOpen Project をクリックして、Visual Studio ソリューションを開きます。

https://github.com/PointCloudLibrary/pcl/releases から .exe を選択して、ビルド済みの PCL バイナリをダウンロードしてインストールしてください。サードパーティライブラリをインストールするオプションにチェックを入れてください。

Windows 上の PCL インストールウィザードのスクリーンショット。

Zivid PCL コードサンプルを設定する前に、PATH システム変数にいくつかの設定を含める必要があります。PC で Control PanelSystem and SecuritySystemAdvanced System SettingsEnvironment Variables に移動します。[システム変数] で Path 変数を選択し、 Edit をクリックします。

Windows のシステム情報のスクリーンショット。

Edit environment variable ウィンドウで New をクリックし、PCL バイナリと OpenNI2(サードパーティライブラリ)へのパスを追加します。例:

C:\Program Files\PCL 1.12.1\bin
C:\Program Files\OpenNI2\Tools

PCL 1.12.1 と OpenNI2 を Program Files フォルダにインストールしている場合、変更を反映させるには、Windows アカウントから一度ログアウトして再度ログインする必要がある場合があります。

警告

VTK などのサードパーティ製 PCL ライブラリには、手動でリンクする必要がある場合があります。エラーが発生した場合は、ライブラリのバイナリへのパスを PATH システム変数に追加してください。たとえば、PCL 1.12.1 を Program Files にインストールした場合は、VTK の場合 C:/Program Files/PCL 1.12.1/3rdParty/VTK/bin を追加します。

CMake プロジェクトを設定する際には、PCL へのパスは既に設定されているはずです。

zivid-cpp-samples で作成したビルドディレクトリに移動して、以下を実行してください。

cmake -DUSE_PCL=ON -DUSE_EIGEN3=OFF -DUSE_OPENCV=OFF ../source

CMake GUI で USE_PCL ボックスがチェックされていることを確認し、 Configure をクリックします。

../../../../_images/cmake_gui_screenshot_add_pcl.png

Generate をクリックし、 Open Project をクリックして、Visual Studio ソリューションを開きます。

https://opencv.org/releases/ からビルド済みの OpenCV バイナリをダウンロードしてインストールします。それらを目的の場所に展開します。例:

C:\Users\Public

Zivid OpenCV コードサンプルを設定する前に、PATH システム変数にいくつかの設定を含める必要があります。PC で Control PanelSystem and SecuritySystemAdvanced System SettingsEnvironment Variables に移動します。[システム変数] で Path 変数を選択し、 Edit をクリックします。

Windows のシステム情報のスクリーンショット。

Edit environment variable ウィンドウで New をクリックし、OpenCV バイナリへのパスを追加します。例:

C:\Program Files\opencv\build\x64\vc16\bin

OpenCV 4.7.0 をインストールして C:/Program Files/opencv に展開した場合。

警告

変更を反映させるには、Windows アカウントから一度サインアウトして再度サインインする必要がある場合があります。

CMake プロジェクトを設定する際は、OpenCV を含めて、OpenCV に依存するサンプルを設定してください。

zivid-cpp-samples で作成したビルドディレクトリに移動して、以下を実行してください。

cmake -DOpenCV_DIR=<path> -DUSE_EIGEN3=OFF -DUSE_PCL=OFF ../source

ここで <path> は OpenCV ビルドフォルダへのフルパスです。例: C:/Program Files/opencv/build

CMake GUI で Add Entry をクリックして OpenCV へのパスを追加します。 OpenCV_DIR を追加し、その値を OpenCV のビルドフォルダに指定します。

OpenCV のインクルードディレクトリを入力できる CMake GUI のスクリーンショット。

USE_OPENCV チェックボックスがオンになっていることを確認し、 Configure をクリックします。次に GenerateOpen Project をクリックして、Visual Studio ソリューションを開きます。

Halcon C++ サンプルを実行するには、PC に Halcon がインストールされている必要があります。詳しい手順については Windows 用 Zivid + HALCON をインストールする を参照してください。

Halcon をインストールしたら、CMake を設定して Halcon のサンプルを使用するようにしてください。

zivid-cpp-samples で作成したビルドディレクトリに移動して、以下を実行してください。

cmake -DUSE_HALCON=ON -DUSE_EIGEN3=OFF -DUSE_OPENCV=OFF -DUSE_PCL=OFF ../source

USE_HALCON チェックボックスがオンになっていることを確認し、 Configure をクリックします。

../../../../_images/cmake_gui_screenshot_add_halcon.png

次に GenerateOpen Project をクリックして、Visual Studio ソリューションを開きます。

複数の依存関係を一度に設定したい場合は、CMake で複数の依存関係を同時に追加するだけで済みます。たとえば、Eigen、PCL、OpenCV を必要とするすべてのサンプルを使用したい場合は、次のように実行できます。

cmake -DEIGEN3_INCLUDE_DIR=<path-to-eigen> -DUSE_PCL=ON -DOpenCV_DIR=<path-to-opencv> ../source

ここで <path-to-eigen><path-to-opencv> は、Eigen フォルダーと OpenCV フォルダーへのパスです。