HALCON——连接相机、调节参数、采集图像

您正在查看旧版本的文档。点击页面右上角可切换到最新版本的文档。

本章介绍使用HALCON助手和梅卡曼德提供的HALCON例程连接Mech-Eye工业级3D相机、调节参数并采集图像。

使用前提

Nano(V3)和Pro XS(V3)相机推荐与电脑直接连接,不使用交换机。
  • 电脑上已安装HALCON 20.11或以上。

低于20.11版本的HALCON未经完全验证。
  • 电脑上已安装Mech-Eye SDK 2.0.0或以上。

相机固件版本与软件版本一致时,才可使用Mech-Eye SDK。如需升级固件版本,请参考升级相机固件
  • 相机与电脑IP地址在同一网段。

建议将相机与电脑设置为静态IP地址,IP地址设置请参考使用Mech-Eye Viewer设置相机IP地址

在HALCON中,你可以通过HALCON助手或梅卡曼德提供的HALCON例程连接相机。

使用HALCON助手

使用HALCON中的图像采集助手可快速连接相机、采集图像和调节参数。

在电脑上运行HALCON软件,选择助手  打开新的 Image Acquisition,即可打开图像采集助手。

连接相机

  1. Image Acquisition窗口的资源选项卡中,选择图像获取接口,并从下拉菜单中选择GigEVision2

    choose gigevision2
    如下拉菜单中无GigEVision2选项,表明GigEVision2图像获取接口未安装。请参考HALCON的安装指南,通过MVTec软件管理器(SOM)安装接口。
  2. 连接选项卡中,选择设备,单击连接可连接相机。

    connect the camera
  • 相机连接成功,连接按钮变为断开;如无变化,则为连接失败。如需断开与相机的连接,单击断开

  • 如相机已被其他客户端连接,则连接一定不成功。请先在其他客户端中断开连接,再使用HALCON连接。

  • 设备中的相机名称可通过Mech-Eye Viewer自定义,便于查找需要连接的相机。在Mech-Eye Viewer中连接相机后,自定义相机备注即可。推荐设置为英语名称。

采集图像

相机连接后,在连接选项卡中单击采集即可进行单次图像采集。

如相机采图时间较长,可调大相机的MTU值,并开启电脑上的巨型帧功能

你也可以进行多次或连续图像采集,为此需先调节AcquisitionMode参数的值。

  • 进行多次图像采集:

    • 切换至参数选项卡,将AcquisitionMode参数设置为MultiFrame

    • 单击右上角的刷新后,在AcquisitionFrameCount中设置需进行的图像采集次数。

    • 切换至连接选项卡,单击实时进行图像采集。

    • 设定次数的图像采集完成后,实时按钮变为停止。单击停止停止图像采集。

  • 进行连续图像采集:

    • 切换至参数选项卡,将AcquisitionMode参数设置为Continuous

    • 切换至连接选项卡,单击实时进行图像采集。

    • 实时按钮变为停止。单击停止停止图像采集。

  • AcquisitionMode参数设置为MultiFrameContinuous时,仍可单击采集进行单次图像采集。

  • AcquisitionMode参数设置为SingleFrame时,只可进行单次图像采集。

选择数据类型

相机连接后,默认采集的数据类型是2D图。你可通过调节DeviceScanType参数选择要获取的数据类型(2D图或深度图)。

  1. 单击参数选项卡,将DeviceScanType参数设置为需要的数据类型。数据类型说明如下:

    数据类型

    Areascan

    2D图

    Areascan3D

    深度图(包含深度信息的2D图)

  2. 进行图像采集,获取所选的数据类型。

    勾选参数选项卡右上角的更新图像,调节参数后Canvas窗口中的图像将自动更新。

设置采集区域

相机连接后,如需对获取的图像进行裁剪,可通过调节HeightWidthOffsetXOffsetY四个参数设置采集区域。

请按照以下步骤设置采集区域:

  1. 选择需要设置采集区域的数据类型。

  2. 单击采集进行单次图像采集,确认当前图像。

  3. 切换至参数选项卡,调节HeightWidthOffsetXOffsetY参数。下图展示这四个参数及其所定义的采集区域(橙色方框)与原始图像的关系。

    set capture region 1
    • Width:采集区域宽度

    • Height:采集区域高度

    • OffsetX:采集区域左上角的x坐标(原始图像左上角坐标为 (0, 0) )

    • OffsetY:采集区域左上角的y坐标

      以上四个参数的设置需满足以下要求:

      • Width + OffsetX)不超过原始图像的宽度

      • Height + OffsetY)不超过原始图像的高度

      原始图像的宽度和高度可在只读参数WidthMaxHeightMax中查看(需将可视度设为专家或以上)。

  4. 再次进行图像采集,确认裁剪结果。

勾选参数选项卡右上角的更新图像,调节参数后Canvas窗口中的图像将自动更新。
  1. 切换至代码生成选项卡,单击插入代码生成相应的代码。

  2. 如需为另一数据类型设置采集区域:

    1. 在当前助手窗口中断开相机连接。

    2. 打开一个新的助手窗口并连接相机。

    3. 选择另一数据类型并重复上述步骤。

  • 上述四个采集区域参数不会被保存至参数组中。如相机断电,其参数值将被重置。如需记录其参数值,请生成并保存代码。

  • 更改DeviceScanTypeScan3DBinningEnable参数也将重置上述采集区域参数的值。

采集区域与Scan3DROI的区别

Mech-Eye工业级3D相机还提供了另外一组用于设置感兴趣区域的参数:Scan3DROILeftScan3DROITopScan3DROIHeightScan3DROIWidth(统称为“Scan3DROI”)。

采集区域参数和Scan3DROI的区别如下表。请根据需求选择要使用的参数。

采集区域 Scan3DROI

不可保存至参数组,相机断电将重置参数值

可保存至参数组

2D图和深度图均可设置

2D图不可设置

对图像进行裁剪

不对图像进行裁剪

只可在HALCON中设置

可用Mech-Eye Viewer中的可视化工具设置

调节参数

如获取的数据不满足需求,可在参数选项卡下调节相机参数。

  • 相机支持参数组功能,通过切换参数组可以快速切换相机的参数配置。需先选择用于保存参数值的参数组,再调节参数。

  • 如果需要增加或删除参数组,请通过Mech-Eye Viewer配置。使用Mech-Eye Viewer配置完参数组后,在HALCON助手的参数选项卡下,单击右上角的刷新按钮读取相机最新配置。

执行以下步骤调节参数:

  1. 相机连接后,单击参数选项卡,将UserSetSelector参数设置为要修改的参数组。

    select parameter group
  2. 找到UserSetLoad参数,单击右侧的应用读取配置。

    如单击应用后,各参数的值未更新,请再次单击。

  3. 找到需要修改的参数,并修改参数值。

  4. 找到UserSetSave参数,单击右侧的应用保存配置。

  5. 切换至代码生成选项卡,单击插入代码生成相应的代码。

参考信息

  • GenICam支持的相机参数与Mech-Eye Viewer提供的参数基本上一一对应。关于参数的对应关系,以及GenICam支持的相机参数的描述和解释,请参考GenICam支持的相机参数

  • 设置自动曝光感兴趣区域深度范围感兴趣区域等相机参数时,通常需要借助可视化工具不断调节从而获取理想的值。由于HALCON并未提供辅助参数设置的可视化工具,你可以借助Mech-Eye Viewer的可视化设置工具来设置这些参数。详细信息请查看借助Mech-Eye Viewer为GenICam客户端设置相机参数

使用Mech-Eye Viewer连接相机前,需断开相机与HALCON的连接。如连接不成功,请关闭HALCON软件后,再重新连接。

使用HALCON例程

GitHub上提供了一系列HALCON例程。本章介绍如何使用其中的connect_to_camera_and_capture_images例程连接相机、采集数据、修改参数并保存数据。你可以直接使用例程或者根据实际需要进行修改以满足项目需求。

HALCON例程使用C++语言编写,可以在HALCON软件的HDevelop集成开发环境中直接运行。

运行例程

请执行以下步骤运行例程:

  1. 获取connect_to_camera_and_capture_images例程,依次单击Code  Download ZIP即可下载。

  2. 在HALCON中打开例程:运行HALCON,将例程拖拽至HALCON的程序窗口中。

  3. 选中程序窗口info_framegrabber算子所在的行,单击工具栏中的step over按钮或单击键盘上的F6,运行该算子。

  4. 双击控制变量区域的DeviceInfos,可查看所有可连接的相机。

    camera information 1
  5. 选中相机并双击,复制unique_name:user_name:的相机名。

    camera information 3
    user_name为自定义的相机备注。可在Mech-Eye Viewer中设置
  6. 定位至如下命令行,将MechEye替换为unique_nameuser_name

    DeviceInfo := 'MechEye'
  7. 单击工具栏中的run按钮或单击键盘上的F5,运行例程。

  8. 运行结束后,在例程文件夹内查看本次运行获取的2D图和点云数据结果,默认保存文件名为image2d.bmpPointCloud.ply

  • 例程运行结束后需单击工具栏中的reset重置程序执行,否则将导致Mech-Eye Viewer无法连接到相机。

  • Canvas窗口显示点云后,需单击该窗口中的Continue继续执行。否则,程序会卡在visualize_object_model_3d算子中。

  • 如相机采图时间较长,可调大相机的MTU值,并开启电脑上的巨型帧功能

  • 网络较差导致数据丢失时,可以使用以下指令增大最大允许丢失包数。ParameterValues替换为新的最大允许丢失包数。

    set_framegrabber_param (AcqHandle, '[Stream]GevStreamMaxPacketGaps', ParameterValues)

调节参数

如获取的数据不满足需求,可调节相应参数。

  • 相机支持参数组功能,通过切换参数组可以快速切换相机的参数配置。相机参数需要在指定的参数组下设置。

  • 如果需要增加或删除参数组,请通过Mech-Eye Viewer配置。

执行以下步骤调节参数:

  1. 使用以下算子获取相机的参数组列表。

    get_framegrabber_param (AcqHandle, 'UserSetSelector_values', ParameterValues)
  2. 控制变量区域的ParameterValues中,查看所有的参数组名称。

  3. 使用以下算子选择要修改的参数组。UserSetSelectorUserSetLoad为相机参数,分别用于选择和加载参数组。ParameterGroupName替换为实际参数组名称。

    set_framegrabber_param (AcqHandle, 'UserSetSelector','ParameterGroupName')
    set_framegrabber_param (AcqHandle, 'UserSetLoad','ParameterGroupName')
  4. 使用以下算子获取指定参数的值。ParameterName替换为实际相机参数名称。ParameterValues是保存获取参数值的变量,可以根据需要更改。注意变量不需要置于引号内。

    get_framegrabber_param (AcqHandle, 'ParameterName', ParameterValues)
  5. 控制变量区域的ParameterValues中,查看该参数的值。

  6. 使用以下算子修改参数设置。ParameterName替换为实际相机参数名称,NewParameterValue替换为新的参数值。

    set_framegrabber_param (AcqHandle, 'ParameterName', 'NewParameterValue')
  7. 使用以下算子将参数设置修改保存到参数组中。UserSetSave为相机参数,用于保存参数设置到参数组。ParameterGroupName替换为实际参数组名称。

    set_framegrabber_param (AcqHandle, 'UserSetSave', 'ParameterGroupName')

参考信息

  • GenICam支持的相机参数与Mech-Eye Viewer提供的参数基本上一一对应。关于参数的对应关系,以及GenICam支持的相机参数的描述和解释,请参考GenICam支持的相机参数

  • 设置自动曝光感兴趣区域深度范围感兴趣区域等相机参数时,通常需要借助可视化工具不断调节从而获取理想的值。由于HALCON并未提供辅助参数设置的可视化工具,你可以借助Mech-Eye Viewer的可视化设置工具来设置这些参数。详细信息请查看借助Mech-Eye Viewer为GenICam客户端设置相机参数

    使用Mech-Eye Viewer连接相机前,需断开相机与HALCON的连接。如连接不成功,请关闭HALCON软件后,再重新连接。

我们重视您的隐私

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