智能相机并不是一台简单的相机,而是一种高度集成化的微小型机器视觉系统。它将图像的采集、处理与通信功能集成于单一相机内,从而提供了具有多功能、模块化、高可靠性、易于实现的机器视觉解决方案。同时,由于应用了的DSP、FPGA及大容量存储技术,其智能化程度不断提高,可满足多种机器视觉的应用需求。
如图,每个相机可能有不同的流采集器(Grab Streamer)或同一接口上安装了多个相机(也对应多个流采集器),对应多个通道(Channel)。对每个通道来说,在实际采集时数据传输实际上是拆分成如图的数据包(Packet) RawData形式传递的,内存中存储形式为一维数组,在每一帧图像的起始存在不同的标识表明一帧的开始和结束,每一个Packet都有标识表明当前所属的通道。为了显示图像,用户程序需要重新将一维数组数据拼装成图像形式,这一过程由用户完成,通常可借助OpenCV或MIL等图像处理包完成该操作。
1.工业相机编程模型和流程
2.工业相机SDK接口使用总结
3.Basler Pylon工业相机SDK的使用
4.Pylon 以实时图像采集讲解PylonC SDK使用流程
5.关于使用维视工业相机 SDK 采集图像的问题
6.工业相机SDK之opencv二次开发
Basler Pylon工业相机SDK的使用
Pylon库有C++ .Net等各种封装版本,一般用C++版本,功能全面效率高,但对于不同接口(GigE USB3.0 CameraLink)的相机必须对应使用不同的类,之间不能通用。
基于GenAPI通用相机抽象接口使用的是Node结构,以字符串形式访问相机参数,可以统一管理不同接口类型的相机。但效率低,使用不方便。
Pylon高层用C++封装,形成本地相机对象
如何管理多个相机,靠谱的方法是按相机ID标定顺序,需要读一个配置文件,比如XML或JSON,然而一开始不知道ID,需要先列举出来。