马鞍山Basler巴斯勒视觉检测机维修
-
面议
这里使用三个队列完成采集和处理同步。
DMA队列:
当CMOS或CCD芯片曝光然后将数据转到相机缓存后,这时候DMA会负责将缓存中数据写入到“DMA队列”头Buffer中。
准备队列:
一旦“DMA队列”头Buffer被填充完成,会被加到“准备队列”尾后,这时候会发送中断通知用户程序:当前又有一帧数据采集完成,您看着处理吧。
处理队列:
当用户接收到中断会自动跳转到中断函数中,使用GetFrame拿取“准备队列”头Buffer,然后加到当前用户程序“处理队列”尾,用户程序从“处理队列”头拿取Buffer处理完成后使用PutFrame将Buffer再添加到原始的“DMA队列”尾。
可以看到相机编程需要做三方面工作:
1.初始化操作
先初始化相机驱动Com环境,然后遍历得到当前的相机列表,根据相机ID或List 编号选择对应相机。
之后连接相机,先设置本次采集的相机参数(帧速、图像大小、缩放比等),然后是分配和注册当前DMA队列,这里有的是用户完成,有的是SDK完成。
之后先开启DMA逻辑等待相机采图,然后使相机开始工作采图,整个系统就按照之前工作流程运作起来了,许多SDK将“开启DMA”和“相机开始工作”合并为“开始采集”。
2.结束操作
先停止相机工作再关闭DMA逻辑,许多SDK将“开启DMA”和“相机开始工作”合并为“结束采集”。
然后清理DMA队列,和分配时对应,这里有的是用户完成,有的是SDK完成。
后断开相机并清理工作环境。
智能相机并不是一台简单的相机,而是一种高度集成化的微小型机器视觉系统。它将图像的采集、处理与通信功能集成于单一相机内,从而提供了具有多功能、模块化、高可靠性、易于实现的机器视觉解决方案。同时,由于应用了的DSP、FPGA及大容量存储技术,其智能化程度不断提高,可满足多种机器视觉的应用需求。