2. C++ (Ubuntu)¶
本章将介绍如何在 Ubuntu 上运行 C++ 例程。
2.1. 例程简介¶
例程主要分为 5 类: Basic 、 Advanced 、 Util 、 Laser 和 UHP。
Basic
ConnectToCamera :连接相机
ConnectAndCaptureImage :连接相机并获取 2D 图、深度图及 3D 图
CaptureColorMap :从相机获取 OpenCV 格式的彩色图
CaptureDepthMap :从相机获取 OpenCV 格式的深度图
CapturePointCloud :使用单个曝光时间采集图像,生成 PCL 格式的白色点云和彩色点云
CaptureHDRPointCloud :使用多组曝光时间获取图像,生成 PCL 格式的白色点云和彩色点云
CapturePointCloudROI :获取感兴趣区域内的 PCL 格式白色点云和彩色点云
Advanced
CaptureCloudFromDepth :使用 2D 图与深度图生成点云
CaptureSequentiallyMultiCamera :使用多台相机按序获取 2D 图、深度图及 3D 图
CaptureSimultaneouslyMultiCamera :使用多台相机同时获取 2D 图、深度图及 3D 图
CaptureTimedAndPeriodically :设定时间内,定时获取 2D 图像、深度图和 3D 图
Util
GetCameraIntri :获取并打印相机内参
PrintDeviceInfo :获取并打印相机型号、序列号、固件版本等信息
SetDepthRange :设置相机深度范围
SetParameters :设置相机参数
SetUserSets :参数组相关功能,如获取参数组名称,修改参数组名称,保存参数组参数信息。参数组可以保存一组参数值并快速应用
Laser
SetLaserFramePartitionCount :将激光器视野分为多个分区,结构光一次投射到一个分区。整个视野的输出由所有分区的图像融合而成
SetLaserFrameRange :设置结构光投射范围,整个视野范围从 0 到 100
SetLaserFringeCodingMode :设置结构光样式的编码模式
SetLaserPowerLevel :设置激光器的输出功率,影响激光强度
UHP
SetUHPCaptureMode :设置采集模式(分为:相机 1,相机 2 及同时使用两个相机并融合输出)
SetUHPFringeCodingMode :设置结构光样式的编码模式
注意
以上例程已包含在 Mech-Eye SDK 软件包中。
2.2. 准备工作¶
更新软件源列表,并安装依赖库。
sudo apt-get update sudo apt-get install -y build-essential pkg-config cmake
安装 Mech-Eye SDK 。
安装方法参考 在 Ubuntu 上安装 Mech-Eye SDK 。
安装完成后,samples(例程)文件夹的路径为
/opt/mech-mind/mech-eye-sdk/samples/
。安装第三方库。
标注有(OpenCV)或标注有(PCL)的例程需安装第三方库。
注意
若使用虚拟机安装软件,请预留 大于 20G 的磁盘空间,否则可能会导致安装失败。
安装 PCL 。
sudo apt-get install libpcl-dev
安装 OpenCV 。
wget https://github.com/opencv/opencv/archive/3.4.5.tar.gz tar -zxvf 3.4.5.tar.gz cd opencv-3.4.5 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=`pwd`/install .. make && make install pkg-config --modversion opencv
2.3. 使用指南¶
编译例程。
在编译例程时,用户可以一次编译所有例程,也可以单独编译某个例程,二选一即可。
注意
每次修改例程下的源码文件,都需要重新编译以更新可执行文件。
一次编译所有例程。
进入例程文件夹。
cd /opt/mech-mind/mech-eye-sdk/samples/
在
/opt/mech-mind/mech-eye-sdk/samples/
路径下,打开CMakeLists.txt
文件,定位到第 88 行(set(OpenCV_DIR “/home/ubuntu/3rdParties/opencv-3.4.5/build”)),将双引号中的路径替换为本地 OpenCV 的 build 路径。sudo vi CMakeLists.txt
在当前路径执行 cmake 与 make 。
sudo cmake . sudo make
编译成功后,生成的例程位于
/opt/mech-mind/mech-eye-sdk/samples/
。
单独编译某个例程。
进入单个例程文件夹,此处以 CaptureSequentiallyMultiCamera 为例 。
cd /opt/mech-mind/mech-eye-sdk/samples/Advanced/CaptureSequentiallyMultiCamera/
在
/opt/mech-mind/mech-eye-sdk/samples/Advanced/CaptureSequentiallyMultiCamera/
路径下,打开CMakeLists.txt
文件,定位到此行set(OpenCV_DIR "/home/ubuntu/3rdParties/opencv-3.4.5/build")
,将双引号中的路径替换为本地 OpenCV 的 build 路径。本步骤仅在使用 OpenCV 的例程中需要执行。sudo vi CMakeLists.txt
在当前路径执行 cmake 与 make 。
sudo cmake . sudo make
编译成功后,生成的例程位于
/opt/mech-mind/mech-eye-sdk/samples/Advanced/CaptureSequentiallyMultiCamera/
。
运行例程。
在
/opt/mech-mind/mech-eye-sdk/samples/
路径下,以 ConnectToCamera 为例:sudo ./ConnectToCamera
输出结果如下所示:
Find Mech-Eye device... Mech-Eye device index : 0 ............................ Camera Model Name: Mech-Eye Pro M Enhanced Camera ID: NEC15221A3000001 Camera IP Address: 192.168.xx.xx Hardware Version: Vx.x.x Firmware Version: Vx.x.x ............................ Please enter the device index you want to connect: 0 Connected to the Mech-Eye device successfully. Disconnected from the Mech-Eye device successfully.
程序运行过程中,请根据提示选择待连接相机编号,并等待程序运行完毕。
注意
涉及采集点云的例程,普通用户没有权限对点云文件进行写入操作,所以使用 sudo 命令以系统管理者的身份执行例程程序 。
涉及采集图像或点云的例程,运行结束后,默认将图片或点云数据保存至
/opt/mech-mind/mech-eye-sdk/samples/
。
小技巧
在每个例程文件夹下,ReadMe.txt
文件提供关于该例程的简要说明。