HALCON 中的捕获设置
简介
当您在 HALCON 中通过 GenICam GenTL 接口 使用 Zivid 相机时,每个 Zivid 捕获设置都会作为 GenICam 特性节点公开。您可以使用 set_framegrabber_param 和 get_framegrabber_param 在 HDevelop 中配置和读取这些节点,也可以在 HDevelop 的 Image Acquisition Assistant 中直观地浏览它们。
本页说明:
如何配置捕获设置
如何查看已连接相机公开的设置
Zivid SDK 设置如何映射到 GenICam 节点名称
备注
我们建议通过 .yml 设置文件配置捕获设置(请参阅下文的 通过 YML 文件配置设置(推荐)),而不是逐个设置节点。这样可以确保设置有单一的真实来源,并且是配置没有独立 GenICam 节点的设置(例如 2D Color 设置)的唯一方式。
要了解各个设置的作用,请参阅 相机设置。
通过 YML 文件配置设置(推荐)
Zivid 设置 .yml 文件是在 HALCON 中配置捕获设置的推荐方式。您可以使用 预设值,或从 Zivid Studio 将设置保存为 .yml 文件。
使用 LoadSettingsFromFile 节点加载文件,然后进行捕获:
set_framegrabber_param (AcqHandle, 'LoadSettingsFromFile', PresetFile)
set_framegrabber_param (AcqHandle, 'CaptureMode', 'Capture2D3D')
grab_data (Image, Region, Contours, AcqHandle, ObjectModel3D)
对于仅 2D 的设置,请使用 LoadSettings2DFromFile。
CaptureWithSettingsFromYML.hdev 示例演示了如何加载预设值并在 2D、3D 和 2D+3D 模式下进行捕获。
查看可用设置和当前生效的设置
确定哪些捕获设置可用,以及当前设置了哪些值,是在 HALCON 中最不直观的部分。 有两种方法可以做到这一点。
使用 HDevelop Image Acquisition Assistant
在 HDevelop 中,打开 Assistants → Open New Image Acquisition 并连接到 Zivid 设备。Parameters 选项卡会显示已连接相机的完整 GenICam 特性树,您可以在其中交互式地读取和编辑每个可用设置。这是探索特定相机型号支持哪些功能的最快方式。
以编程方式
要通过代码枚举设置,请查询接口和已连接的相机:
* Parameters exposed by the GenICam GenTL interface
info_framegrabber ('GenICamTL', 'parameters', Information_parameters, ValueList_parameters)
info_framegrabber ('GenICamTL', 'parameters_readonly', Information_parameters_readonly, ValueList_parameters_readonly)
* All node names available on the connected camera
get_framegrabber_param (AcqHandle, 'available_param_names', Value_available_param_names)
获得节点名称后,可以使用 get_framegrabber_param 读取其中任意一个的当前值,例如:
get_framegrabber_param (AcqHandle, 'Engine', CurrentEngine)
get_framegrabber_param (AcqHandle, 'SamplingColor', CurrentSamplingColor)
QuerySettingsAndParameters.hdev 示例枚举了接口参数,并读取了一系列相机、设备和流节点。
备注
逐次采集设置(Aperture、ExposureTime、Gain 和 Brightness)属于用于 HDR 捕获的采集列表,而不是单一的固定值。当设置从 .yml 文件加载时,该文件仍然是真实来源;上述节点用于检查和调试。某些节点还具有特定型号的限制和选项,因此不同相机型号的可用参数可能有所不同。
配置单个设置节点(高级)
您也可以通过直接写入其 GenICam 节点来配置各项设置。这对于小幅调整或以编程方式生成设置很有用,但对于完整设置,我们建议 加载 YML 文件。
逐次采集设置通过多采集列表进行配置。切换到 HDR 模式,重置之前的所有采集,然后为每次曝光添加一个采集:
set_framegrabber_param (AcqHandle, 'AcquisitionMode', 'MultiAcquisitionFrame')
set_framegrabber_param (AcqHandle, 'ResetAcquisitions', 1)
set_framegrabber_param (AcqHandle, 'Aperture', 5.66)
set_framegrabber_param (AcqHandle, 'ExposureTime', 6500)
set_framegrabber_param (AcqHandle, 'Brightness', 1.8)
set_framegrabber_param (AcqHandle, 'Gain', 1.0)
set_framegrabber_param (AcqHandle, 'AddAcquisition', 1)
其余设置(Engine、采样、感兴趣区域、过滤器和颜色)为全局设置,只需设置一次:
set_framegrabber_param (AcqHandle, 'Engine', 'stripe')
set_framegrabber_param (AcqHandle, 'SamplingColor', 'rgb')
set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianEnabled', 1)
set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianSigma', 1.5)
CaptureHDRCompleteSettings.hdev 示例明确配置了每个可用节点,是节点名称最完整的参考。
将 Zivid SDK 设置映射到 GenICam 节点
GenICam 节点名称是 Zivid SDK Settings 树的扁平化形式:取完整的设置路径,去掉 Settings 根节点,然后将剩余名称以 PascalCase 形式拼接起来。例如,Settings/Processing/Filters/Smoothing/Gaussian/Sigma 会变为 ProcessingFiltersSmoothingGaussianSigma。
下表列出了最常用设置的映射关系。
Zivid SDK 设置 |
GenICam 节点名称 |
|---|---|
Settings/Engine |
Engine |
Settings/Sampling/Color |
SamplingColor |
Settings/Sampling/Pixel |
SamplingPixel |
Settings/Acquisition/Aperture |
Aperture |
Settings/Acquisition/ExposureTime |
ExposureTime |
Settings/Acquisition/Brightness |
Brightness |
Settings/Acquisition/Gain |
Gain |
Settings/RegionOfInterest/Box/Enabled |
RegionOfInterestBoxEnabled |
Settings/RegionOfInterest/Box/PointO |
RegionOfInterestBoxPointOX/OY/OZ |
Settings/RegionOfInterest/Box/PointA |
RegionOfInterestBoxPointAX/AY/AZ |
Settings/RegionOfInterest/Box/PointB |
RegionOfInterestBoxPointBX/BY/BZ |
Settings/RegionOfInterest/Box/Extents |
RegionOfInterestBoxExtentsMin/Max |
Settings/RegionOfInterest/Depth/Enabled |
RegionOfInterestDepthEnabled |
Settings/RegionOfInterest/Depth/Range |
RegionOfInterestDepthRangeMin/Max |
Settings/Processing/Filters/Smoothing/Gaussian/Enabled |
ProcessingFiltersSmoothingGaussianEnabled |
Settings/Processing/Filters/Smoothing/Gaussian/Sigma |
ProcessingFiltersSmoothingGaussianSigma |
Settings/Processing/Filters/Noise/Removal/Enabled |
ProcessingFiltersNoiseRemovalEnabled |
Settings/Processing/Filters/Noise/Removal/Threshold |
ProcessingFiltersNoiseRemovalThreshold |
Settings/Processing/Filters/Noise/Suppression/Enabled |
ProcessingFiltersNoiseSuppressionEnabled |
Settings/Processing/Filters/Noise/Repair/Enabled |
ProcessingFiltersNoiseRepairEnabled |
Settings/Processing/Filters/Outlier/Removal/Enabled |
ProcessingFiltersOutlierRemovalEnabled |
Settings/Processing/Filters/Outlier/Removal/Threshold |
ProcessingFiltersOutlierRemovalThreshold |
Settings/Processing/Filters/Reflection/Removal/Enabled |
ProcessingFiltersReflectionRemovalEnabled |
Settings/Processing/Filters/Cluster/Removal/Enabled |
ProcessingFiltersClusterRemovalEnabled |
Settings/Processing/Filters/Hole/Repair/Enabled |
ProcessingFiltersHoleRepairEnabled |
Settings/Processing/Resampling/Mode |
ProcessingResamplingMode |
Settings/Processing/Color/Balance/Red |
ProcessingColorBalanceRed |
Settings/Processing/Color/Balance/Green |
ProcessingColorBalanceGreen |
Settings/Processing/Color/Balance/Blue |
ProcessingColorBalanceBlue |
要获取相机上可用节点名称的完整列表,请按照 查看可用设置和当前生效的设置 中的说明使用 available_param_names,或在 HDevelop 的 Image Acquisition Assistant 中浏览特性树。
警告
2D Color 设置(Settings/Color)没有独立的 GenICam 节点,只能通过 加载 YML 文件 进行配置。