有无图像没图像
是否黑屏黑屏,白屏,花屏
是否亮灯亮红灯
是否开机不开机
故障设备找不到相机
如图,每个相机可能有不同的流采集器(grab streamer)或同一接口上安装了多个相机(也对应多个流采集器),对应多个通道(channel)。对每个通道来说,在实际采集时数据传输实际上是拆分成如图的数据包(packet) rawdata形式传递的,内存中存储形式为一维数组,在每一帧图像的起始存在不同的标识表明一帧的开始和结束,每一个packet都有标识表明当前所属的通道。为了显示图像,用户程序需要重新将一维数组数据拼装成图像形式,这一过程由用户完成,通常可借助opencv或mil等图像处理包完成该操作。
二、 工业相机sdk接口使用总结
相机调用 :
我们利用相机采集图像,首先要对相机进行相关参数设置及控制,这需要对相机的sdk包比较了解,一般相机厂家都会提供相机sdk,其中包含用户手册和调用demo,这些都大大降低了调用门槛,提高了二次开发用户的效率。目前用过balser、海康、大华等相机,其实都是一个套路,都是按照下面几个步骤进行的。
1)枚举设备
2)创建句柄
3)打开设备
4)开始抓图
5)获取一帧并保存图像
6)停止抓图
7)关闭设备
8)销毁句柄
相机同步:
若是开发过程中用到双目或者多目的话,则需要外接同步触发器或者外部触发信号,通过相机同步触发线来实现同步问题。以实际应用过的basler aca1300-200uc为例,其相机同步触发线具体类型如下:
1 -—— +12 vdc 红
2 —— i/o input 1 黄
3 —— vcc(加电阻) 蓝
4 —— i/o out 1 绿
6 —— dccam power gnd 黑
0000—— i/o gnd 白
下面是其中对于不同的工作要求,加载相机对象和卸载相机对象是通用的。而要使用其他模块,如事件对象时,相应的改为加载事件对象和卸载事件对象,以及使用事件对象完成相关任务即可。编程时一定要对整个流程做好规划,特别是硬件编程时一定留意内存泄露,前面分配的资源一定要在后面释放。
下面是五个大流程的详细解析,需要的地方已经加以说明,并注解了需要用到的函数
加载相机对象:
卸载相机对象:
加载数据流抓取对象:
卸载数据流抓取对象:
单帧或连续抓图过程:
按照以上介绍的流程即可实现实时图像采集:
很多人问我要源代码,翻了以前的程序文件夹找到了这个程序,演示了利用pylon sdk进行相机采集的过程,使用mil完成界面显示,采集部分封装成了类,可以直接重用。测试相机为basler相机。注意pylon仅完成raw data的采集,使用mil的mbufput完成图像数据的重组,然后mil自动显示。
工业相机是机器视觉系统中的一个关键组件,其本质的功能就是将光信号转变成高清工业相机为有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节,相机的不仅是直接决定所采集到的图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。工业相机又俗称摄像机,相比于传统的民用相机(摄像机)而言,它具有高的图像稳定性、高传输能力和高抗干扰能力等,目前市面上工业相机大多是基于ccd或cmos芯片的相机。
苏州技优电子技术服务有限公司
18112603420
qq: 1971266479