pylon的结构
本节简要介绍了pylon C ++ API的最重要概念。
![](https://img.haomeiwen.com/i15040312/5e8162b6001918fe.png)
Transport Layers
transport layer(传输层)就是物理接口(例如:IEEE 1394,GigE或Camera Lin)的抽象。每个接口都能通过驱动程序来访问相机设备。pylon当前包含了四个不同的传输层
- PylonGigE: 适用于千兆以太网相机,使用的是GigE Vision协议
- Pylon1394:适用于IIDC 1394兼容相机(在Linux或者OS X平台上不可用)
- PylonUsb:适用于USB3 Vision兼容相机
- PylonCLSer:适用于Camera Link相机,使用的是CL串行接口(仅限于相机配置,在Linux和OS X平台上不可用)
Transport Layers对象就是设备工厂,可用于:
- 发现 相机(这个过程也叫作相机枚举)
- 创建 pylon Devices, pylon Devices可用来获取相机设备
- 销毁 pylon Devices
- 获取 传输层 特殊参数
Transport Layer Factory
程序不能直接获取传输层对象,要用Transport Layer Factory来创建 Transport Layer对象,每个对象代表一个传输层。另外,Transport Layer Factory可以用做设备工厂,用以创建和销毁所用传输层的pylon Devices
底层API pylon Devices
在pylon中,物理相机使用pylon Devices来表示的。只能在进行底层编程时,才能直接使用pylon Devices,否侧无法直接使用
Instant Camera 类
可使用Instant Camera,方便的访问相机设备,并且高度可定制化。它可以让你用几行简单的代码就能抓取图像。它的内部就是使用了pylon Devices。pylon Devices需要被创建并附加到Instant Camera对象上。另外,可以通过Device Specific Instant Camera类快捷的访问相机参数。甚至可以通过Instant Camera Array 类,用非常简单的代码,从多个相机抓取图像。
GenApi Node Maps
pylon API使用的是GenICam标准来定义相机的配置和其他参数,该标准是由欧洲机器视觉协会(EMVA)制定的。GenICam规范http://www.GenICam.org定义了相机描述文件的格式。这些文件描述了相加的配置接口,这些相机都符合GenICam标准。描述文件的格式是XML,文件中描述了相机的各个寄存器和他们依赖关系,还描述了通过底层寄存器的读写操作来访问高级功能(例如Gain(相机增益),Exposure Time(曝光时间),Image Format(图像格式))的信息。
在程序中,用Nodes对象来表示相机描述文件的元素。例如,一个node可以表示一个相机寄存器,一个相机参数(例如Gain),一个变量参数集合,等等。每个node都实现了GenApi::INode接口。
这些node通过不同的关系链接在一起,可在www.GenICam.org找到GenApi的标准文档。 在运行时,一个XML描述文件可实例化为一个node map。
可以使用GenICam的GenApi模块提供的代码生成器,从相机描述文件创建一个编程接口。这个接口用一个参数类来表示,里面包含了每个相机参数的成员。这些成员代表了GenApi node的引用或者句柄。这样一个参数类,可以表示某一传输层(例如Gige) 的相机的参数
在pylon中, node maps 不仅可以用来表示相机参数,还可用来表示其他pylon对象(比如Transport Layer对象)或者 Image Format Convertert 的参数
例如:
- Pylon::CInstantCamera 类中有 Pylon::CInstantCamera::GetNodeMap() 方法,该方法返回 node map,包含了所有相机参数集合,GenApi nodes
- Pylon::CImageFormatConverter::GetNodeMap() 用来获取 Image Format Converter的参数
支持图像处理
除了用于抓取图像的Instant Camera类之外,pylon还提供了 Image Handling Support 来处理抓取的图像。有image类,Windows位图支持,图像格式转换器,图像窗口,图像的加载与保存
底层API
请尽量使用Instant Camera类,不要随便使用底层API
Camera 类
底层camera对象包装了一个pylon Device,提供了快捷的方法访问相机参数、获取流抓取器、获取事件抓取器、使用GenApi参数类获取Transport Layer(传输层)。底层camera类可用Device Specific Instant Camera类来代替
Stream Grabbers
--更新中...
网友评论