GT1660介绍及PvAPI使用的简单说明

更新时间:2023-09-18 15:55:01 阅读量: 幼儿教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2016年3月5日工作汇报

GT166相机介绍及简析

一、GT1660相机的基本介绍

AVT GigE Prosilica GT1660 200万像素相机Prosilica GT1660是德国Allied Vision Technologies公司 (德国AVT)生产的一款200万像素千兆网接口 (符合GigE Vision协议)数字相机。GT1660是一款专门用于极端温度条件和照明波动变化环境的坚固型摄像机。GT1660提供精确自动光圈控制,用户可通过固定孔径值来优化景深、曝光时间和增益值,而无需额外的控制单元。 Prosilica GT 1660 数据接口 IEEE 802.3 1000 baseT 分辨率 1600 × 1200 传感器型号 Truesense KAI-02050 传感器类型 CCD 逐行扫描 传感器尺寸 Type2/3” 像元尺寸 5.5 μm 在全分辨率下的最大帧率 62 fps A/D 14bit 板载FIFO 128 MB 二、GT1660相机的驱动

目前GT1660相机主要有两款驱动及开发包支持开发使用: 1. AVT GigE PvAPI SDK及驱动程序 2. AVT VIMBA SDK及驱动程序

其中VIMBA为AVT公司出品的最新驱动及开发包,它支持ARMv7系统和OpenMP.ARM系统。这两个系统可应用在机器视觉系统中的紧凑且高性价比的主机中。Vimba提供的是与平台无关的基于C和C++的APIs,并且Vimba支持交叉平台开发方式,这会使用户使用Vimba软件开发工具包时非常方便。然而VIMBA开发工作是基于Microsoft Visual Studio 2005平台以上开发的,不支持VC6.0的开发。由于本项目中核心算法需要VC6.0环境,于是在此项目中依旧使用PvAPI驱动程序经行开发。

三、PvAPI基本调试过程如下

3.1 图像采集及显示模块软件流程如下,

1. 通过调用PvInitialize函数初始化PvAPI模块以获取动态链接库函数资源。 2. 调用PvCameraListEx函数枚举电脑系统上所有的 Allied Vision

Technologies cameras 并提取出需要操作的相机操作接口(本测量系统会提取到Prosilica GT1660相机操作句柄)。 3. 调用PvCameraOpen函数打开待操作的相机。

4. 通过相机参数设定函数PvAttrUint32Set 设定相机初始曝光值、电控镜头

2016年3月5日工作汇报

GT166相机介绍及简析

5. 6. 7. 8. 9.

驱动时间及视频图像帧格式等等参数。

调用PvCaptureStart函数发出开始采集图像命令。

通过调用PvCaptureQueueFrame函数刷新采集的图像帧

调用 MFC 图像处理封装类实现测量软件界面视频图像的实时显示输出。 调用PvCaptureEnd函数停止图像采集。

调用PvUnInitialize函数释放操作系统申请的PvAPI系统资源。

3.2相机使用中的基本语句 1)PvAPI初始化命令 PvInitialize():

初始化PvAPI模块,没有参数,返回值如下:

ePvErrSuccess没有错误

ePvErrResources, 操作系统对命令不识别 ePvErrInternalFault, 出现内部错误

2)打开相机命令 a) PvCameraListEx()

列出当前计算机下所有可用相机的网口,并将相机标识或ID赋予*pList。

返回值为系统当前相机的数量,

b) PvCameraOpen()

根据PvCameraListEx()中提供的相机标识打开相机。

返回值为

ePvErrSuccess没有错误

ePvErrAccessDenied, 在该模式下,相机不能打开 ePvErrNotFound, 找不到相机

ePvErrUnplugged, 指令结束后才找到相机(相机之前未供电) ePvErrBadParameter, 相机的参数出现问题

ePvErrResources, 上位机(计算机)返回的命令无效 ePvErrInternalFault, 出现内部故障

ePvErrBadSequence, API 未初始化或相机已被打开

3)进行图像捕捉与采集 a)PvCaptureStart()

开启相机传输图面模式。 返回值为

ePvErrSuccess没有错误

ePvErrBadHandle, 相机句柄无效 ePvErrUnplugged, 相机未供电

ePvErrResources, 上位机(计算机)返回的命令无效 ePvErrInternalFault, 出现内部故障

ePvErrBadSequence, API 未初始化或相机已被打开

2016年3月5日工作汇报

GT166相机介绍及简析

b)PvCaptureQueueFrame()

为相机获得的图像开启排列帧缓存区 返回值为

ePvErrSuccess没有错误

ePvErrBadHandle, 相机句柄无效 ePvErrUnplugged, 相机未供电 ePvErrQueueFull, 排列帧已满

ePvErrResources, 上位机(计算机)返回的命令无效 ePvErrInternalFault, 出现内部故障 ePvErrBadSequence, API 未初始化

4)相机基本参数设置命令

对相机基本参数进行设置的命令语句如下表所示: 参数类型 枚举型 Unit32 Float32 Int64 String Command 命令格式 PvAttrEnumSet PvAttrUnint32Set PvAttrFloat32Set PvAttrInt64Set PvAttrStringSet PvCommand 基本命令格式PvAttr+参数类型+Set(相机名,”相机参数名称”,预设置的参数) 例如:

a)_ TimeStampFrequency – Uint32 – R/C

单位:Hz

相机的时钟频率,TimeStampValue的时基

PvAttrUint32Set(Camera, \

b) FrameStartTriggerMode – Enum – R/W

帧频触发发模式,为枚举型命令,参数为:Freerun,SyncIn1SyncIn2 SyncIn3SyncIn4,FixedRate,Software.

Freerun:设置了相机的最大帧频,

FixedRate: 设置相机的帧频,具体帧频由FrameRate决定。 PvAttrEnumSet(Camera, \“FixedRate”);

c) FrameRate – Float32 – R/W

范围:相机帧频范围,单位:Hz

需要和FrameStartTriggerMode被设置成FixedRate,控制相机使用指定的帧频。

PvAttr Float32Set(Camera, \

2016年3月5日工作汇报

GT166相机介绍及简析

d) ExposureValue – Uint32 – R/W

范围:相机曝光时间范围单位:us 设置曝光时间

PvAttrUint32Set(Camera, \

本项目中使用的参数设置语句如下所示:

e)Command命令为相机执行命令的一些语句 如:AcquisitionStart相机开始采集. AcquisitionStop相机停止采集

.

5)关闭相机

a)PvCaptureQueueClear() 清空相机帧数列

ePvErrSuccess没有错误

ePvErrBadHandle, 相机句柄无效 ePvErrInternalFault, 出现内部故障 ePvErrBadSequence, API 未初始化

b)PvCaptureEnd() 关闭图像捕捉流

四.GT1660相机错误代码

绝大多数PvAPI函数返回的是tPvErr-type 错误代码 现将错误代码列如下表格

2016年3月5日工作汇报

GT166相机介绍及简析

错误代码 ePvErrSuccess ePvErrCameraFault ePvErrInternalFault ePvErrBadHandle ePvErrBadParameter ePvErrBadSequence ePvErrNotFound ePvErrAccessDenied ePvErrUnplugged ePvErrInvalidSetup ePvErrResources ePvErrQueueFull ePvErrBufferTooSmall ePvErrCancelled ePvErrDataLost ePvErrDataMissing ePvErrTimeout ePvErrOutOfRange ePvErrWrongType ePvErrForbidden ePvErrUnavailable ePvErrFirewall 错误含义 没有错误 未知相机故障 未知的PvAPI或驱动故障 相机句柄错误 函数参数错误 API调用顺序不正确的 PvCameraOpen返回的相机没有发现 由于其他应用中已经使用了相机导致调用PvCameraOpen命令错误 相机未供电 相机设置不正确时,命令采集图像 必要的系统或网络失效 帧队列已满 储存图像的缓冲区过小 帧队列已被取消但仍然调用PvCaptureQueueClear清除队列 帧队列中数据丢失,或者不想缓冲区中的指针失效 帧队列中部分数据丢失 当需要调用指定时间函数时,功能已超时 参数变量超出范围 非该函数属性 当前属性不能被写入 属性失效 Window的防火墙阻碍了数据流的传输 VC下的错误代号 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22

本文来源:https://www.bwwdw.com/article/c7ah.html

Top