下面是其中对于不同的工作要求,加载相机对象和卸载相机对象是通用的。而要使用其他模块,如事件对象时,相应的改为加载事件对象和卸载事件对象,以及使用事件对象完成相关任务即可。编程时一定要对整个流程做好规划,特别是硬件编程时一定留意内存泄露,前面分配的资源一定要在后面释放。
下面是五个大流程的详细解析,需要的地方已经加以说明,并注解了需要用到的函数
加载相机对象:
卸载相机对象:
加载数据流抓取对象:
卸载数据流抓取对象:
单帧或连续抓图过程:
按照以上介绍的流程即可实现实时图像采集:
很多人问我要源代码,翻了以前的程序文件夹找到了这个程序,演示了利用Pylon SDK进行相机采集的过程,使用MIL完成界面显示,采集部分封装成了类,可以直接重用。测试相机为Basler相机。注意Pylon仅完成Raw Data的采集,使用MIL的MbufPut完成图像数据的重组,然后MIL自动显示。
工业相机是机器视觉系统中的一个关键组件,相比于市面上普通相机来说,具有更高的传输力、抗干扰力以及稳定的成像能力。它由两大基本部件组成:图像感光芯片和数字化的数据接口。
Basler 作为计算机视觉行业的标准制定者,一直致力于为客户提供一站式解决方案。BASLER工业相机广泛应用在人工智能设备中,持续赋能智能制造,随着智能设备产品的增多,后期使用上坏的可能也很多,坏了就淘汰扔掉吗?对于现在的制造成本来说,对工业相机进行维修是非常理想的选择,不仅缩短设备维修的时间,也大大节省了设备购买的成本,对于深耕视觉设备工业相机维修10年以上的技优电子来说,不仅交期快,修复率也高。
可以看到相机编程需要做三方面工作:
1.初始化操作
先初始化相机驱动Com环境,然后遍历得到当前的相机列表,根据相机ID或List 编号选择对应相机。
之后连接相机,先设置本次采集的相机参数(帧速、图像大小、缩放比等),然后是分配和注册当前DMA队列,这里有的是用户完成,有的是SDK完成。
之后先开启DMA逻辑等待相机采图,然后使相机开始工作采图,整个系统就按照之前工作流程运作起来了,许多SDK将“开启DMA”和“相机开始工作”合并为“开始采集”。
2.结束操作
先停止相机工作再关闭DMA逻辑,许多SDK将“开启DMA”和“相机开始工作”合并为“结束采集”。
然后清理DMA队列,和分配时对应,这里有的是用户完成,有的是SDK完成。
后断开相机并清理工作环境。
工业相机是机器视觉系统中的一个关键组件,其本质的功能就是将光信号转变成高清工业相机为有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节,相机的不仅是直接决定所采集到的图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。工业相机又俗称摄像机,相比于传统的民用相机(摄像机)而言,它具有高的图像稳定性、高传输能力和高抗干扰能力等,目前市面上工业相机大多是基于CCD或CMOS芯片的相机。
随着科技的日渐成熟,工业相机得到了飞速发展。近几年国外的工业相机厂商快速崛起,成为机器视觉领域的,比较有代表性的有:basler相机、灰点相机等。下面我们来看一下工业相机的主要参数:
1.分辨率:是指该像元传感器对不同光波的敏感特性,一般响应范围是350nm-1000nm,一些相机在靶面前加了一个滤镜,滤除红外光线,如果系统需要对红外感光时可去掉该滤镜。
2.像素深度:这个参数也在一定程度上影响着图像质量的好坏。
3.帧率:这个参数是相机采取传输图像速率的一个重要的衡量标准,对于一般的面阵相机一般为每秒采集的帧数,对于大多数线阵相机为每秒采集的行数,这是选择工业相机时得考虑的的一个参数
4.曝光方式:不同的工业相机有着不同的曝光方式。线阵相机一般采用的是逐行曝光方式,面阵相机一般采用帧曝光和滚动行曝光,还有一些面阵相机才用的是场曝光。
5.像元尺寸:像元大小和分辨率共同决定了相机的靶面的大小。而相机靶面有对图像的成像质量有着很大的影响。一般情况下,像元的尺寸越小,越难制造,但是越小的像元成像的质量也就越高。
6.接口类型:不同的工业相机有着不同的接口类型。主要有GIGE千兆网、USB2.0、USB3.0、Camera Link1394A、1394B、等多种类型的接口
智能相机并不是一台简单的相机,而是一种高度集成化的微小型机器视觉系统。它将图像的采集、处理与通信功能集成于单一相机内,从而提供了具有多功能、模块化、高可靠性、易于实现的机器视觉解决方案。同时,由于应用了的DSP、FPGA及大容量存储技术,其智能化程度不断提高,可满足多种机器视觉的应用需求。