オプションの依存関係を使用した 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 。
https://github.com/PointCloudLibrary/pcl/releases から .exe を選択して、ビルド済みの PCL バイナリをダウンロードしてインストールしてください。サードパーティライブラリをインストールするオプションにチェックを入れてください。
Zivid PCL コードサンプルを設定する前に、PATH システム変数にいくつかの設定を含める必要があります。PC で Control Panel → System and Security → System → Advanced System Settings → Environment Variables に移動します。[システム変数] で Path 変数を選択し、 Edit をクリックします。
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 へのパスは既に設定されているはずです。
https://opencv.org/releases/ からビルド済みの OpenCV バイナリをダウンロードしてインストールします。それらを目的の場所に展開します。例:
C:\Users\Public
Zivid OpenCV コードサンプルを設定する前に、PATH システム変数にいくつかの設定を含める必要があります。PC で Control Panel → System and Security → System → Advanced System Settings → Environment Variables に移動します。[システム変数] で Path 変数を選択し、 Edit をクリックします。
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 。
Halcon C++ サンプルを実行するには、PC に Halcon がインストールされている必要があります。詳しい手順については Windows 用 Zivid + HALCON をインストールする を参照してください。
Halcon をインストールしたら、CMake を設定して Halcon のサンプルを使用するようにしてください。
複数の依存関係を一度に設定したい場合は、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 フォルダーへのパスです。