跳转到内容
STAGING SERVER
DEVELOPMENT SERVER

核心概念#

采集生命周期#

Camera → Transport → Buffer Queue → Application
                         ↑
                   RetrieveResult()

心智模型#

  • 相机异步运行。
  • Python 同步检索。
  • Buffer 解耦了这两个域。

阻塞行为#

处理速度过慢可能会导致积压和丢帧。您可以为 RetrieveResult() 指定一个合适的超时值,以避免无限期地等待 grab 结果。

RetrieveResult() → Waits until frame or timeout

GenICam Nodes#

什么是 GenICam Node?#

一个 GenICam node 代表相机的单个可配置功能或 Property。Node 在 GenICam 标准中定义,它提供了一种独立于硬件供应商访问相机功能的统一方法。

每个 node 的行为类似于强类型参数,并公开各种信息:

  • 名称(例如: ExposureTime)
  • 数据类型(例如 Float、Integer、Enumeration 等)
  • 访问权限(只读或读/写)
  • 有效值范围或选项

在 pypylon 中,node 作为相机对象的属性进行访问,并提供以下方法:

exposure_time = camera.ExposureTime   # Read exposure time in microseconds.
camera.ExposureTime.Value = 3000  # Value is in microseconds. Check Increment and ValueRange for valid values.

常见 Node 类型#

参数 示例 描述
Float ExposureTime 映射到离散硬件设置的连续值
Integer Width 离散值
Enumeration TriggerMode 预定义的字符串值
Boolean AcquisitionFrameRateEnable True/False
命令 ExecuteSoftwareTrigger 执行操作

理解节点至关重要,因为 pypylon 中的所有相机配置都是通过它们完成的。

pylon Parameters#

pylon parameters 封装了 GenICam 节点,并为读取和写入值提供了扩展且一致的接口。它们还处理类型转换、范围检查和访问模式处理。

如果未找到节点,将返回 pylon.PlaceholderParameter ,这允许您的代码妥善处理缺失的节点。在不同相机型号或固件版本可能具有不同可用功能的设置中,这种情况经常出现。

var = camera.NotThere.GetValueOrDefault(1)
camera.NotThere.TrySetValue(3000)

设置参数

要更改某些参数,必须先停止图像采集:

camera.StopGrabbing()
camera.Width.Value = 640
camera.StartGrabbing()