使用可选依赖项配置 C++ 示例

本教程介绍如何使用 CMake 为 Zivid C++ 示例配置可选依赖项。

要求

可选要求

一些示例依赖于外部库,特别是:

备注

以下说明已使用这些版本的依赖项进行了测试:

  • Visual Studio 2019 及更高版本

  • CMake 3.24 及更高版本

  • PCL 1.12.1

  • Eigen 3.4.0

  • OpenCV 4.7.0

  • Open3D 0.19.0

如果您使用其他版本,您可能会遇到问题。

根据您要运行的示例程序安装所需的依赖项;请参阅下表。

示例程序

PCL

Eigen

OpenCV

Halcon

Open3D

ReadPCLVis3D

YES

CaptureWritePCLVis3D

YES

CaptureHDRVisNormals

YES

StitchByTransformation

YES

StitchByTransformationFromZDF

YES

MaskPointCloud

YES

YES

ROIBoxViaCheckerboard

YES

UtilizeHandEyeCalibration

YES

PoseConversions

YES

ROIBoxViaArucoMarker

YES

YES

CaptureUndistort2D

YES

CreateDepthMap

YES

ProjectAndFindMarker

YES

ReprojectPoints

YES

ReadAndProjectImage

YES

GammaCorrection

YES

AllocateMemoryForPointCloudData

YES

TransformPointCloudViaCheckerboard

YES

TransformPointCloudViaArucoMarker

YES

CaptureHalconViaGenICam

YES

CaptureHalconViaZivid

YES

通过运行以下命令从包管理器安装 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 -DUSE_OPEN3D=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 -DUSE_OPEN3D=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 -DUSE_OPEN3D=OFF ../source
cmake --build .

https://github.com/isl-org/Open3D/releases 下载并安装预构建的 Open3D 二进制文件。

对于 0.19.0 版本,请从 https://github.com/isl-org/Open3D/releases/download/v0.19.0/open3d-devel-linux-x86_64-cxx11-abi-0.19.0.tar.xz 下载 tarball

该 tarball 包含一个名为 open3d-devel-linux-x86_64-cxx11-abi-0.19.0 的文件夹。将此文件夹的内容复制到 /usr/local

您可以通过在终端中运行以下命令一次性完成此操作:

sudo tar --strip-components=1 -xvf ./open3d-devel-linux-x86_64-cxx11-abi-0.19.0-C /usr/local

导航到您在 zivid-cpp-samples 中创建的构建目录并运行

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

http://eigen.tuxfamily.org/ 下载 Eigen 的最新稳定版本,并将文件夹解压到所需的位置。配置 CMake 项目时,请包含 Eigen 以配置依赖它的示例。

导航到您在 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 ,并将值指向解压文件夹的位置。

CMake GUI 的屏幕截图,您可以在其中输入 Eigen 3 包含目录。

确保选中 USE_EIGEN3 ,然后点击 Configure 。然后点击 GenerateOpen Project 打开 Visual Studio 解决方案。

https://github.com/PointCloudLibrary/pcl/releases 中选择 .exe 下载并安装预构建的 PCL 二进制文件。勾选安装第三方库的选项。

Windows 上的 PCL 安装向导的屏幕截图。

在配置 Zivid PCL 代码示例之前,必须将一些设置添加到 PATH 系统变量中。在您的电脑上,导航至 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

如果您已在 Program Files 中安装了 PCL 1.12.1 和 OpenNI2,则可能需要退出 Windows 帐户并重新登录才能使更改生效。

警告

您可能需要手动链接到某些第三方 PCL 库,例如 VTK。如果遇到错误,请在 PATH 系统变量中添加库二进制文件的路径。例如,对于 VTK,如果您在 Program Files 中安装了 PCL 1.12.1,则需要添加 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

单击 GenerateOpen Project 以打开 Visual Studio 解决方案。

https://opencv.org/releases/ 下载并安装预编译的 OpenCV 二进制文件。解压到你想要的路径,例如

C:\Users\Public

在配置 Zivid OpenCV 代码示例之前,必须将一些设置添加到 PATH 系统变量中。在您的电脑上,导航至 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 来配置依赖于它的示例。

导航到您在 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 的构建文件夹。

CMake GUI 的屏幕截图,您可以在其中输入 OpenCV 包含目录。

确保勾选了 USE_OPENCV ,然后点击 Configure 。然后点击 GenerateOpen Project 打开 Visual Studio 解决方案。

您需要在电脑上安装 Halcon 才能运行 Halcon C++ 示例。请参阅 在Windows中安装Zivid + HALCON 获取更多说明。

安装 Halcon 后,配置 CMake 以使用 Halcon 示例。

导航到您在 zivid-cpp-samples 中创建的构建目录并运行

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

确保选中 USE_HALCON 框并单击 Configure

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

然后单击 GenerateOpen Project 以打开 Visual Studio 解决方案。

https://github.com/isl-org/Open3D/releases 下载并安装预编译的 Open3D 二进制文件。Open3D 不支持多配置构建,因此您必须选择要配置的配置。

将它们提取到您想要的目的地,例如

C:\Program Files\Open3D
C:\Program Files\Open3D-Debug

为了让 CMake 找到 Open3D,您必须执行以下操作之一:

  • 设置 CMAKE_INSTALL_PREFIX 变量以指向包含 CMake 文件夹的文件夹,或者您必须

  • 设置 Open3D_DIR 变量以指向包含 Open3DConfig.cmake 的文件夹

导航到您在 zivid-cpp-samples 中创建的构建目录并运行

cmake -DUSE_OPEN3D=ON -DCMAKE_INSTALL_PREFIX=<path-to-open3d> -DUSE_EIGEN3=OFF -DUSE_OPENCV=OFF -DUSE_PCL=OFF ../source

其中 <path-to-open3d> 是 Open3D 文件夹的路径,例如 C:/Program Files/Open3D

添加到 CMAKE_INSTALL_PREFIX 或设置 Open3D_DIR 变量以指向 Open3D 文件夹。

确保选中 USE_OPEN3D 框并单击 Configure

../../../_images/cmake_gui_screenshot_add_open3d.png

然后单击 GenerateOpen Project 以打开 Visual Studio 解决方案。

为了运行 Open3D 示例,您必须将 Open3D 二进制文件夹添加到 PATH 环境变量中。

如果你想同时配置多个依赖项,可以在 CMake 中同时添加多个依赖项。例如,如果你想要运行所有需要 Eigen 和 Open3D 的示例,可以运行以下命令:

mkdir build
cd build
cmake -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 -DUSE_OPEN3D=ON -DUSE_PCL=OFF -DUSE_OPENCV=OFF ../source
cmake -DEIGEN3_INCLUDE_DIR=<path-to-eigen> -DUSE_OPEN3D=ON -DCMAKE_INSTALL_PREFIX=<path-to-open3d> -DUSE_PCL=OFF -DUSE_OPENCV=OFF ../source

where <path-to-eigen> is the full path to where you installed Eigen, e.g. C:/Program Files/Eigen, and <path-to-open3d> is the path to the Open3D folder, e.g. C:/Program Files/Open3D.