C++(Windows)
本章介绍如何在Windows系统中使用CMake配置Mech-Eye API的C++例程,并使用Visual Studio构建例程。
例程简介
例程分为7类:Basic、Advanced、Util、Laser、UHP、Calibration和Halcon。
-
Basic例程:与连接和基础采集相关。
-
Advanced例程:与高级采集技巧相关。
-
Util例程:与获取相机信息及设置参数相关。
-
Laser例程:仅适用于Laser,DEEP与LSR系列相机。
-
UHP例程:仅适用于UHP系列相机。
-
Calibration例程:通过Mech-Eye API进行手眼标定。
-
Halcon例程:通过Mech-Eye API获取HALCON可读取的点云。
各分类中包含的例程及其简介如下。
Basic
-
ConnectToCamera:连接相机。
-
ConnectAndCaptureImage:连接相机并获取2D图、深度图及点云数据。
-
CaptureColorMap:从相机获取并保存2D图。
-
CaptureDepthMap:从相机获取并保存深度图。
-
CapturePointCloud:使用单个曝光时间采集图像,生成并保存白色点云和彩色点云。
-
CaptureHDRPointCloud:使用多个曝光时间采集图像,生成并保存白色点云和彩色点云。
-
CapturePointCloudROI:获取并保存感兴趣区域内的白色点云和彩色点云。
-
CapturePointCloudFromTextureMask:从覆盖掩膜的2D图和深度图生成并保存白色点云和彩色点云。
Advanced
-
CaptureCloudFromDepth:从2D图与深度图生成并保存点云。
-
CaptureSequentiallyMultiCamera:使用多台相机按序获取并保存2D图、深度图及点云。
-
CaptureSimultaneouslyMultiCamera:使用多台相机同时获取并保存2D图、深度图及点云。
-
CaptureTimedAndPeriodically:在设定时间内,定时获取并保存2D图、深度图和点云。
Util
-
GetCameraIntri:获取并打印相机内参。
-
PrintDeviceInfo:获取并打印相机型号、序列号、固件版本、温度等信息。
-
SetDepthRange:设置相机深度范围。
-
SetParameters:设置相机参数。
-
SetUserSets:执行参数组相关功能,如获取参数组名称,选择参数组,保存参数值至当前参数组。通过参数组可以保存一组参数值并快速应用。
Laser
-
SetLaserFramePartitionCount:将投影仪视野分为多个分区,结构光一次投射到一个分区。整个视野的输出由所有分区的图像融合而成。
-
SetLaserFrameRange:设置结构光投射范围,整个视野范围从0到100。
-
SetLaserFringeCodingMode:设置结构光样式的编码模式。
-
SetLaserPowerLevel:设置激光器的输出功率(最大输出功率的百分比),影响激光强度。
UHP
-
SetUHPCaptureMode:设置采集模式(分为:2D相机1,2D相机2及同时使用两个2D相机并融合输出)。
-
SetUHPFringeCodingMode:设置结构光样式的编码模式。
Calibration
-
HandEyeCalibration: 用于进行手眼标定。
Halcon
-
CaptureHalconPointCloud:从相机获取点云数据,通过HALCON C++接口转换并保存点云。
使用前提
使用Mech-Eye API的C++例程,需先满足以下使用前提:
-
获取例程。
-
安装必需软件。
-
安装例程依赖的可选软件,并添加相关的环境变量。
获取例程
C++例程包含在Mech-Eye SDK的安装路径中,也可从GitHub克隆获取。安装路径中的例程为Mech-Eye SDK发布时的版本,GitHub上的例程可能包含最新修改。
-
安装路径中的例程位于xxx/Mech-Eye SDK-x.x.x/API/samples/c++/source路径下;
-
通过GitHub克隆获取的例程位于xxx/mecheye_cpp_samples/source路径下。
安装必需软件
使用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 |
---|---|---|---|
CaptureColorMap |
√ |
||
CaptureDepthMap |
√ |
||
CapturePointCloud |
√ |
||
CaptureHDRPointCloud |
√ |
||
CapturePointCloudROI |
√ |
||
CapturePointCloudFromTextureMask |
√ |
||
CaptureCloudFromDepth |
√ |
||
CaptureTimedAndPeriodically |
√ |
√ |
|
CaptureSimultaneouslyMultiCamera |
√ |
√ |
|
CaptureSequentiallyMultiCamera |
√ |
√ |
|
CaptureHalconPointCloud |
√ |
安装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-x.x.x/API/samples/c++/source路径下的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-x.x.x/API/samples/c++/source
Where to build the binaries
xxx/Mech-Eye SDK-x.x.x/API/samples/c++/source/build
-
如需单独构建某一例程,请输入如下路径。将路径中的Category替换为例程所在类别的名称,将SampleName替换为例程名称。
Where is the source code
xxx/Mech-Eye SDK-x.x.x/API/samples/c++/source/Category/SampleName
Where to build the binaries
xxx/Mech-Eye SDK-x.x.x/API/samples/c++/source/Category/SampleName/build
-
-
单击Configure,进入配置页面。选择Visual Studio的版本,并将平台设置为x64,然后单击Finish。配置成功后,日志最末行将显示Configuring done。
-
单击Generate生成解决方案。生成成功后,日志最末行将显示Generating done。然后,单击Open Project,使用Visual Studio打开解决方案。
使用Visual Studio构建例程
-
在Visual Studio工具栏中,将解决方案配置从Debug改为Release模式。
-
在解决方案资源管理器窗口中右键单击顶端的解决方案“xxx”, 并选择生成解决方案。每个例程会生成对应的exe格式可执行文件,保存在Release文件夹中,位于在CMake中输入的Where to build the binaries目录下。