工作流程:
当相机工作时,就是连续的采集-处理-采集-处理...的过程,但是这就存在一个问题,如果采集的速度比处理速度快,处理不过来,怎么办?在实际中,我们使用队列来解决这个问题,当前帧没有处理完,下一帧到来时直接放入队列等待当前处理完成后再处理它。
三、 Basler Pylon工业相机SDK的使用
Pylon库有C++ .Net等各种封装版本,一般用C++版本,功能全面效率高,但对于不同接口(GigE USB3.0 CameraLink)的相机必须对应使用不同的类,之间不能通用。
基于GenAPI通用相机抽象接口使用的是Node结构,以字符串形式访问相机参数,可以统一管理不同接口类型的相机。但效率低,使用不方便。
Pylon高层用C++封装,形成本地相机对象
如何管理多个相机,靠谱的方法是按相机ID标定顺序,需要读一个配置文件,比如XML或JSON,然而一开始不知道ID,需要先列举出来。
3.中断响应操作
当相机一帧采集完成后,自动跳转进入中断回调函数,这里分了两种中断回调函数。
种为简单的取Buffer->处理->放回。
第二种结合Windows的消息队列,在此处再给一个“处理队列”,给处理一个缓冲时间。
这里的处理包括常见的图像处理、计算和显示及RawData拼装为图像等用到Buffer的地方。
前面也说过,常用的是中断响应处理,除此之外,自己去查询Buffer填充状态并作相关同步操作在某些场合也会用到,这个请查询不同相机SDK给出的同步方案。
差不多所有的工业相机SDK都是这样的编程模型和流程,AVT 1394相机和Basler Camera Link相机和AVT GigE相机相关代码在笔者网站可下载,还有之前讲的Basler Pylon SDK相机编程,他们基本流程都是一样,恕不详述!
2、疫情之下,医疗机器人临危受命
COVID-19的爆发进一步了“医疗服务机器人”的需求,然而市场上现有大部分服务机器人智能化程度并不高。埃尔森的3D视觉定位系统,赋予机器人“眼睛”和AI的“大脑”,让机器人具有立体的视觉感知能力。
该系统使用Basler工业相机,搭载Sony Pregius IMX174芯片拥有极高的信噪比,实现了机器人对患者特定部位的精准定位,配合AGV和机械手,可穿梭在无人化病房区域内,替代医护人员完成测温、生命体征监护、给药治疗等更多工作,可大幅减轻医护人员工作量,减少医护人员感染风险。
面对未来,Basler China和ALSONTECH(埃尔森智能科技)将继续携手研发更加多样的智能产品,为医疗、物流、汽车、3C、生产制造等行业提供成熟、的机器人3D视觉方案,以的视觉技术理念、行业的产品性能,携手将未来“智能生活”、“智能生产”变成触手可及的现实。