C++(Windows)
本章介绍如何在Windows系统中使用CMake配置Mech-Eye API的C++例程,并使用Visual Studio构建例程。
例程简介
例程分为以下类别:Basic、Advanced、Util、Calibration、Pcl和Halcon。
-
Basic例程:连接和采集数据。
-
Advanced例程:通过复杂、高阶的方式采集数据,设置部分型号特有参数。
-
Util例程:获取相机信息和设置通用参数。
-
Calibration例程:通过Mech-Eye API进行手眼标定。
-
Pcl例程:利用PCL库进行数据格式转换、可视化等。
-
Halcon例程:通过Mech-Eye API获取HALCON可读取的点云。
各分类中包含的例程及其简介如下。
Basic
-
ConnectToCamera:连接相机。
-
ConnectAndCaptureImages:连接相机并获取2D图、深度图及点云数据。
-
Capture2DImage:从相机获取并保存2D图。
-
CaptureDepthMap:从相机获取并保存深度图。
-
CapturePointCloud:从相机获取并保存无纹理点云和纹理点云。
-
CapturePointCloudHDR:设置多个曝光时间,然后从相机获取并保存点云。
-
CapturePointCloudWithNormals:计算法向量,并保存含法向量的点云。
Advanced
-
ConvertDepthMapToPointCloud:从深度图生成并保存点云。
-
MultipleCamerasCaptureSequentially:使用多台相机按序获取并保存2D图、深度图及点云。
-
MultipleCamerasCaptureSimultaneously:使用多台相机同时获取并保存2D图、深度图及点云。
-
CapturePeriodically:在设定时间内,定时获取并保存2D图、深度图和点云。
-
Mapping2DImageToDepthMap:从覆盖掩膜的2D图和深度图生成并保存无纹理点云和纹理点云。
-
RenderDepthMap:获取并保存使用jet配色方案渲染的深度图。
-
TransformPointCloud:获取并保存自定义坐标系下的点云。
-
SetParametersOfLaserCameras:设置激光相机特有的参数。
-
SetParametersOfUHPCameras:设置UHP系列相机特有的参数。
-
RegisterCameraEvent:定义并注册检测相机事件的回调函数。
-
CaptureStereo2DImages:获取Deep(V3)、Laser L Enhanced(V3)、PRO XS(V4)、LSR L(V4)、LSR S(V4)和DEEP(V4)的两个2D相机的2D图像。
Util
-
GetCameraIntrinsics:获取并打印相机内参。
-
PrintCameraInfo:获取并打印相机型号、序列号、固件版本、温度等信息。
-
SetScanningParameters:设置3D参数、2D参数和感兴趣区域分组下的参数。
-
SetDepthRange:设置深度范围参数。
-
SetPointCloudProcessingParameters:设置点云后处理参数。
-
ManageUserSets:管理参数组,如获取所有参数组的名称、新增参数组、切换参数组和保存参数设置至参数组。
-
SaveAndLoadUserSet:从JSON文件导入并替换所有参数组,将所有参数组保存为JSON文件。
Calibration
-
HandEyeCalibration: 进行手眼标定。
Pcl
-
ConvertPointCloudToPcl:从相机获取点云数据并转换为PCL数据结构。
-
ConvertPointCloudWithNormalsToPcl:从相机获取含法向量的点云数据并转换为PCL数据结构。
Halcon
-
ConvertPointCloudToObjectModel3D:从相机获取点云数据,通过HALCON C++接口转换并保存点云。
获取例程
C++例程包含在Mech-Eye SDK的安装路径中,也可从GitHub克隆获取。安装路径中的例程为Mech-Eye SDK发布时的版本,GitHub上的例程可能包含最新修改。
-
安装路径中的例程位于xxx/Mech-Eye SDK-2.4.1/API/samples/cpp/area_scan_3d_camera路径下;
-
通过GitHub克隆获取的例程位于xxx/mecheye_cpp_samples/area_scan_3d_camera路径下。
安装必需软件
使用Mech-Eye API的C++例程,必须安装Mech-Eye SDK、CMake及Visual Studio。
安装最新版本的Mech-Eye SDK
请根据Mech-Eye SDK安装指南安装或升级Mech-Eye SDK。
安装CMake(3.2或以上版本)
-
下载CMake:下载Windows x64 Installer右侧的安装包。
-
安装时,请选择以下两个选项,以将CMake添加至环境变量,并创建CMake的桌面快捷方式。
-
Add CMake to the system PATH for all users
-
Create Cmake Desktop Icon
-
安装Visual Studio(2017或以上版本)
-
安装时,勾选桌面应用和移动应用分类中的以下两个工作负荷,再点击安装。
-
使用C++的桌面开发
-
通用Windows平台开发
-
安装完成后,请重启电脑。如仍需安装例程依赖的软件库,可在添加环境变量后再重启。 |
(可选)安装依赖的软件库
部分例程中的功能依赖以下第三方软件库。如需使用下表中列出的例程,则必须安装其依赖的软件库。
-
OpenCV:3.4.5或以上版本
-
PCL:1.8.1或以上版本
-
HALCON:20.11或以上版本
低于20.11版本的HALCON未经完全验证。
如未安装可选软件库,则配置例程前必须执行禁用不需要的例程(可选)中的操作。 |
依赖第三方软件库的例程详见下表。
例程 | OpenCV | PCL | HALCON |
---|---|---|---|
Capture2DImage |
√ |
||
CaptureDepthMap |
√ |
||
MultipleCamerasCaptureSequentially |
√ |
||
MultipleCamerasCaptureSimultaneously |
√ |
||
CapturePeriodically |
√ |
||
CaptureStereo2DImages |
√ |
||
HandEyeCalibration |
√ |
||
RenderDepthMap |
√ |
||
ConvertPointCloudToObjectModel3D |
√ |
||
ConvertPointCloudToPcl |
√ |
||
ConvertPointCloudWithNormalsToPcl |
√ |
安装OpenCV
-
下载并安装OpenCV。请记录OpenCV的安装路径。
-
将OpenCV添加至环境变量。详见添加环境变量。
安装PCL
-
参照下表,根据安装的Visual Studio版本确定需安装的PCL版本。
Visual Studio 支持的PCL版本 2017
1.8.1~1.9.1
2019
1.8.1~1.12.1
2022
1.8.1 及以上
-
打开PCL下载页面,单击对应版本下的Assets,并下载exe格式的安装包。
-
运行安装包以安装PCL。安装时,请选择Add PCL to the system PATH for all users,以将PCL添加至环境变量。
安装过程中,可能弹出如下报错:
Warning! PATH too long installer unable to modify PATH!
此情况下,需安装完成后手动将PCL添加至系统变量。详见添加环境变量。
-
将PCL依赖的OpenNI2添加至环境变量。详见添加环境变量。
安装HALCON
安装 HALCON20.11或以上版本。需确保HALCON的证书在有效期内。
添加环境变量
如需使用依赖OpenCV或PCL的例程,请根据以下步骤添加相关的环境变量。
-
右键单击桌面上的此电脑,选择属性。
-
选择高级系统设置,再在弹出的系统属性窗口单击环境变量,进入环境变量界面。
-
双击Path变量进入编辑环境变量页面。单击右上角新建,依次添加以下路径。添加完成后,单击右下角确定。
-
PCL相关:C:/Program Files/OpenNI2/Tools
-
OpenCV相关:
-
xxx/OpenCV/build/x64/vc14/bin
-
xxx/OpenCV/build/x64/vc14/lib
-
-
如安装PCL时弹出报错,则需添加以下路径:
-
xxx/PCL 1.12.1/bin
-
xxx/PCL 1.12.1/3rdParty/VTK/bin
-
-
添加环境变量后,请重启电脑,否则可能导致添加的环境变量不生效。 |
构建及运行例程
你可以一次性构建全部例程,也可以仅构建单独一个例程。
本节以安装路径中包含的例程为例提供相关路径,如使用从GitHub克隆获取的例程,需对应更改路径。 |
禁用不需要的例程(可选)
未安装可选软件库的情况下一次性构建全部例程时,必须进行该节的操作。否则使用CMake配置例程时将报错。 |
如不需要使用依赖OpenCV、PCL或HALCON的例程,在一次性构建全部例程前,需对CMakeLists文件进行编辑,禁用这些例程。
-
打开xxx/Mech-Eye SDK-2.4.1/API/samples/cpp/area_scan_3d_camera路径下的CMakeLists.txt。
-
编辑
option
语句:找到以option
开头的行,将行末的ON
改为OFF
,可禁用依赖该行提及软件库的例程。示例:不需要构建依赖HALCON的例程,则将
option(USE_HALCON…)
行末尾的ON
改为OFF
。 -
保存修改后,关闭CMakeLists.txt。
使用CMake配置例程
-
右键单击CMake并选择以管理员身份运行。
-
输入源码路径与构建目录路径。
-
如需一次性构建所有例程,请输入如下路径。
Where is the source code
xxx/Mech-Eye SDK-2.4.1/API/samples/cpp/area_scan_3d_camera
Where to build the binaries
xxx/Mech-Eye SDK-2.4.1/API/samples/cpp/area_scan_3d_camera/build
-
如需单独构建某一例程,请输入如下路径。将路径中的Category替换为例程所在类别的名称,将SampleName替换为例程名称。
Where is the source code
xxx/Mech-Eye SDK-2.4.1/API/samples/cpp/area_scan_3d_camera/Category/SampleName
Where to build the binaries
xxx/Mech-Eye SDK-2.4.1/API/samples/cpp/area_scan_3d_camera/Category/SampleName/build
-
-
单击Configure,进入配置页面。选择Visual Studio的版本,并将平台设置为x64,然后单击Finish。配置成功后,日志最末行将显示Configuring done。
-
单击Generate生成解决方案。生成成功后,日志最末行将显示Generating done。然后,单击Open Project,使用Visual Studio打开解决方案。
使用Visual Studio构建例程
-
在Visual Studio工具栏中,将解决方案配置从Debug改为Release模式。
-
在菜单栏中选择
。每个例程会生成对应的可执行文件(.exe),保存在Release文件夹中,位于在CMake中输入的Where to build the binaries目录下。