2016年3月5日工作汇报GT166相机介绍及简析一、GT1660相机的基本介绍AVTGigEProsilicaGT1660200万像素相机ProsilicaGT1660是德国AlliedVisionTechnologies公司(德国AVT)生产的一款200万像素千兆网接口(符合GigEVision协议)数字相机。GT1660是一款专门用于极端温度条件和照明波动变化环境的坚固型摄像机。GT1660提供精确自动光圈控制,用户可通过固定孔径值来优化景深、曝光时间和增益值,而无需额外的控制单元。ProsilicaGT1660数据接口IEEE802.31000baseT分辨率1600×1200传感器型号TruesenseKAI-02050传感器类型CCD逐行扫描传感器尺寸Type2/3”像元尺寸5.5µm在全分辨率下的最大帧率62fpsA/D14bit板载FIFO128MB二、GT1660相机的驱动目前GT1660相机主要有两款驱动及开发包支持开发使用:1.AVTGigEPvAPISDK及驱动程序2.AVTVIMBASDK及驱动程序其中VIMBA为AVT公司出品的最新驱动及开发包,它支持ARMv7系统和OpenMP.ARM系统。这两个系统可应用在机器视觉系统中的紧凑且高性价比的主机中。Vimba提供的是与平台无关的基于C和C++的APIs,并且Vimba支持交叉平台开发方式,这会使用户使用Vimba软件开发工具包时非常方便。然而VIMBA开发工作是基于MicrosoftVisualStudio2005平台以上开发的,不支持VC6.0的开发。由于本项目中核心算法需要VC6.0环境,于是在此项目中依旧使用PvAPI驱动程序经行开发。三、PvAPI基本调试过程如下3.1图像采集及显示模块软件流程如下,1.通过调用PvInitialize函数初始化PvAPI模块以获取动态链接库函数资源。2.调用PvCameraListEx函数枚举电脑系统上所有的AlliedVisionTechnologiescameras并提取出需要操作的相机操作接口(本测量系统会提取到ProsilicaGT1660相机操作句柄)。3.调用PvCameraOpen函数打开待操作的相机。2016年3月5日工作汇报GT166相机介绍及简析4.通过相机参数设定函数PvAttrUint32Set设定相机初始曝光值、电控镜头驱动时间及视频图像帧格式等等参数。5.调用PvCaptureStart函数发出开始采集图像命令。6.通过调用PvCaptureQueueFrame函数刷新采集的图像帧7.调用MFC图像处理封装类实现测量软件界面视频图像的实时显示输出。8.调用PvCaptureEnd函数停止图像采集。9.调用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)相机基本参数设置命令对相机基本参数进行设置的命令语句如下表所示:参数类型命令格式枚举型PvAttrEnumSetUnit32PvAttrUnint32SetFloat32PvAttrFloat32SetInt64PvAttrInt64SetStringPvAttrStringSetCommandPvCommand基本命令格式PvAttr+参数类型+Set(相机名,”相机参数名称”,预设置的参数)例如:a)_TimeStampFrequency–Uint32–R/C单位:Hz相机的时钟频率,TimeStampValue的时基PvAttrUint32Set(Camera,TimeStampFrequency,100);//100Hzb)FrameStartTriggerMode–Enum–R/W帧频触发发模式,为枚举型命令,参数为:Freerun,SyncIn1SyncIn2SyncIn3SyncIn4,FixedRate,Software.Freerun:设置了相机的最大帧频,FixedRate:设置相机的帧频,具体帧频由FrameRate决定。PvAttrEnumSet(Camera,FrameStartTriggerMode,“FixedRate”);c)FrameRate–Float32–R/W范围:相机帧频范围,单位:Hz需要和FrameStartTriggerMode被设置成FixedRate,控制相机使用指定的帧频。2016年3月5日工作汇报GT166相机介绍及简析PvAttrFloat32Set(Camera,FrameRate,500);//500usd)ExposureValue–Uint32–R/W范围:相机曝光时间范围单位:us设置曝光时间PvAttrUint32Set(Camera,ExposureValue,10000);//10000us本项目中使用的参数设置语句如下所示:e)Command命令为相机执行命令的一些语句如:AcquisitionStart相机开始采集.AcquisitionStop相机停止采集.5)关闭相机a)PvCaptureQueueClear()清空相机帧数列ePvErrSuccess没有错误ePvErrBadHandle,相机句柄无效ePvErrInternalFault,出现内部故障ePvErrBadSequence,API未初始化b)PvCaptureEnd()关闭图像捕捉流四.GT1660相机错误代码绝大多数PvAPI函数返回的是tPvErr-type错误代码现将错误代码列如下表格2016年3月5日工作汇报GT166相机介绍及简析错误代码错误含义VC下的错误代号ePvErrSuccess没有错误0ePvErrCameraFault未知相机故障1ePvErrInternalFault未知的PvAPI或驱动故障2ePvErrBadHandle相机句柄错误3ePvErrBadParameter函数参数错误4ePvErrBadSequenceAPI调用顺序不正确的5ePvErrNotFoundPvCameraOpen返回的相机没有发现6ePvErrAccessDenied由于其他应用中已经使用了相机导致调用PvCameraOpen命令错误7ePvErrUnplugged相机未供电8ePvErrInvalidSetup相机设置不正确时,命令采集图像9ePvErrResources必要的系统或网络失效10ePvErrQueueFull帧队列已满12ePvErrBufferTooSmall储存图像的缓冲区过小13ePvErrCancelled帧队列已被取消但仍然调用PvCaptureQueueClear清除队列14ePvErrDataLost帧队列中数据丢失,或者不想缓冲区中的指针失效15ePvErrDataMissing帧队列中部分数据丢失16ePvErrTimeout当需要调用指定时间函数时,功能已超时17ePvErrOutOfRange参数变量超出范围18ePvErrWrongType非该函数属性19ePvErrForbidden当前属性不能被写入20ePvErrUnavailable属性失效21ePvErrFirewallWindow的防火墙阻碍了数据流的传输22