问题反馈

使用流程

您正在查看最新版本(V2.4.1)的文档。如果您想查阅其他版本的文档,可以点击页面右上角“切换版本”按钮进行切换。

■ 如果您不确定当前使用的产品是哪个版本,请随时联系梅卡曼德技术支持。

本章介绍使用Mech-Eye API控制相机的基本流程。本章图片及描述中使用C++ Mech-Eye API的类和方法名称,不同语言的对应名称详见代码示例。

operation workflow

发现

调用Camera类中的discoverCameras()方法枚举当前可连接的全部相机,并获取各个相机的信息。

std::vector<mmind::eye::CameraInfo> cameraInfoList = mmind::eye::Camera::discoverCameras();
c++

连接

实例化Camera类后,调用该类中的connect()方法,通过IP地址或由discoverCameras()方法获取的设备信息连接对应的相机。

mmind::eye::Camera camera;
mmind::eye::ErrorStatus status = camera.connect(cameraInfoList[inputIndex]);
c++
mmind::eye::Camera cameras;
mmind::eye::ErrorStatus status = camera.connect("192.168.0.10");
c++

配置

调用UserSetManager类和UserSet类中的方法,选择相机的参数组并调节参数。

  1. 调用UserSetManager类中的selectUserSet方法选择需使用的参数组。

    可通过该类中的getAllUserSetNames()方法获取相机所有可用参数组。
    mmind::eye::UserSetManager userSetManager = camera.userSetManager();
    std::vector<std::string> userSets;
    auto status = userSetManager.getAllUserSetNames(userSets);
    status = userSetManager.selectUserSet(userSets.front());
    c++
  2. 调用UserSet类中的getAvailableParameters()方法获取当前参数组中的全部参数信息,并确认各个参数的数据类型。

    mmind::eye::UserSet currentUserSet = camera.currentUserSet();
    std::vector<Parameter*> parameters = currentUserSet.getAvailableParameters();
    c++
  3. 调用UserSet类中的getIntValue()及类似方法,获取某一参数当前的值。

    int fringeContrastThreshold = 0;
    currentUserSet.getIntValue(mmind::eye::pointcloud_processing_setting::FringeContrastThreshold::name, fringeContrastThreshold);
    c++
  4. 调用UserSet类中的setIntValue()及类似方法,设置某一参数的值。

    auto status = currentUserSet.setIntValue(mmind::eye::pointcloud_processing_setting::FringeContrastThreshold::name, 15);
    c++
  5. 调用UserSet类中的saveAllParametersToDevice()方法,将设置的参数值保存至相机中。

    auto status = currentUserSet.SaveAllParametersToDevice();
    c++

采集和获取数据

Mech-Eye API提供多种方法用于采集和获取数据,可单独采集2D或3D数据,也可同时采集2D和3D数据。

  • 采集并获取用于生成2D图的数据:

    mmind::eye::Frame2D frame2D;
    camera.capture2D(frame2D);
    mmind::eye::Color2DImage color = frame2D.getColorImage();
    mmind::eye::GrayScale2DImage gray= frame2D.getGrayScaleImage();
    c++
  • 采集并获取用于生成深度图和无纹理点云的数据:

    mmind::eye::Frame3D frame3D;
    camera.capture3D(frame3D);
    mmind::eye::DepthMap depth = frame3D.getDepthMap();
    mmind::eye::PointCloud cloud= frame3D.getUntexturedPointCloud();
    c++
  • 采集并获取用于生成2D图、深度图和纹理点云的数据:

    mmind::eye::Frame2DAnd3D frame2DAnd3D;
    camera.capture2DAnd3D(frame2DAnd3D);
    mmind::eye::Color2DImage color = frame2DAnd3D.frame2D().getColorImage();
    mmind::eye::DepthMap depth = frame2DAnd3D.frame3D().getDepthMap();
    mmind::eye::TexturedPointCloud cloud = frame2DAnd3D.getTexturedPointCloud();
    c++
  • 采集并获取用于生成深度图和含法向量的无纹理点云的数据:

    mmind::eye::Frame3D frame3D;
    camera.capture3DWithNormal(frame3D);
    mmind::eye::DepthMap depth = frame3D.getDepthMap();
    PointCloudWithNormals pointCloud = frame3D.getUntexturedPointCloudWithNormals();
    c++
  • 采集并获取用于生成2D图、深度图和含法向量的纹理点云的数据:

    mmind::eye::Frame2DAnd3D frame2DAnd3D;
    camera.capture2DAnd3DWithNormal(frame2DAnd3D);
    mmind::eye::Color2DImage color = frame2DAnd3D.frame2D().getColorImage();
    mmind::eye::DepthMap depth = frame2DAnd3D.frame3D().getDepthMap();
    TexturedPointCloudWithNormals pointCloud = frame2DAnd3D.getTexturedPointCloudWithNormals();
    c++

断开连接

调用Camera类中的disconnect()方法,断开与当前相机的连接。

camera.disconnect();
c++

本章介绍了使用Mech-Eye API控制相机的基本流程。下一章提供Mech-Eye API的参考手册。

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。