2.Pylon CSDK API的结构

用Pylon CSDK进行开发时,应该先了解整个API的结构组成

Pylon C API基于GenApi,GenApi提供各个相机统一访问接口。Pylon C中带GenApi前缀的均为GenApi的函数,这些底层函数直接提供给Pylon C用户使用。

对象和句柄

首先应该了解的是对象和句柄的概念。Pylon定义了相机对象(Camera Objects),同步对象(Waiting),数据流抓取对象(Stream Grabber),事件抓取对象(Event Grabber),附加信息解析对象(Chunk Parsers),笔者认为此处对象可以理解为包含特定数据的结构体。每种对象均由特定的句柄来标示,分别为PYLON_DEVICE_HANDLE.,PYLON_WAITOBJECT_HANDLE(等待对象容器PYLON_WAITOBJECTS_HANDLE),PYLON_STREAMGRABBER_HANDLEPYLON_EVENTGRABBER_HANDLEPYLON_CHUNKPARSER_HANDLE

相机对象(Camera Objects):现实中的每个相机往往映射到一个相机对象上。相机对象可以读写参数设置,当要执行具体的任务时,采用不同的对象,如连续抓取时用据流抓取对象。

同步对象(Waiting):类似Windows线程同步的Event对象,只是在此上抽象了一层,使用更加方便。需要注意的是此处有等待对象和等待对象的容器对象两个概念,等待对象可放入等待对象的容器对象中,这样当等待对象的容器对象中任意一个对象有信号时可以触发操作,这个操作一般是指Pylon C定义的函数,通过这样的方式可以实现多个触发源被同一线程处理。

数据流抓取对象(Stream Grabber):每个相机可能有多个流采集通道也可能没有任何流采集通道,没有流采集通道的相机仍可以读写参数但是不能抓取流数据,有多个流采集通道的每个流采集通道应该分配一个数据流抓取对象。

事件抓取对象(Event Grabber):一些相机可以发送当前的相机状态。一个典型的例子是,当相机采集完后还没有发送流数据时,发送一个采集完毕,此时尽管相机数据还没传输完全,但是可以将相机移到下一个工位。

附加信息解析对象(Chunk Parsers):当附加信息模式(Chunk mode)开启时,相机发送的数据流对象中包含了一些辅助信息(如帧数,时间戳),可用该对象将其解析出来。

传输层

传输层(Transport Layers)实际上是对物理接口(驱动)的一个抽象(主要为FireWire(1394), Gigabit Ethernet (GigE) 和Camera Link),并没有采用传输层对象,应为每个相机只能有一种驱动方式,故实际上传输层集成在相机对象中。

参数设置

可以通过参数设置来控制相机的行为。参数英文为parametersfeatures

主要有如下几种参数

Integer:包括最大,最小和最小间距特性。如图像的宽度和高度的像素大小。

Float:包括最大,最小特性。如曝光时间。

Boolean:设置属性的开闭。如关闭相机的外部触发输入特性(external trigger input)。

String:针对属性的值为一系列字符串。如一个相机的串号。

Enumeration:取值为定义好的几种属性中的一种。可以取值为字符串和索引号。

Command:主要用来执行命令消息,多用在控制各种对象行为。如,控制彩色相机进行白平衡。可以查询这个参数的当前状态(正在执行还是已经执行完毕)。

参数有如下几种属性,同一个参数在相机处于不同状态时的属性不相同,如相机在运行时‘外部触发’属性不可用:

存在(Implemented):由于Basler有多种相机,有的参数只有特定的相机才会有。

可用(Available)

可读(Readable)

可写(Writable)

另外要理解的几个概念

图像采集(image acquisition):相机本身CCD或CMOS感光芯片获得数据

图像传输(image data transfer):数据从相机内存传向电脑

图像抓取(image grabbing):数据写到电脑内存中



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值