
程序基于pyside2库编写实现了多basler相机的同步软件触发简单易用。项目地址包含python源码和.exe打包程序https://github.com/Magic-Doctor/Synchronization-software-trigger-program-based-on-Basler-camera.git其中涉及到pylon的API,可去官网下载SDK。1. 问题背景basler官方的软件pylon Viewer给出了以“Action Commands”的方式来同步多相机单次采集的方案但是这个方案只能单次同步采集并且每个相机还要手动保存图像过于繁琐对于需要一定帧率自由连续同步采集的场景并不好用。因此对此进行了二次开发。主要实现的功能就是多相机连续同步采集当然也具备基本的单次同步采集能力。2. 程序简介简单介绍程序界面如下2.1. 相机理论连接数量没有上限多相机连接时需要借助交换机。2.2.相机连接上后会自动识别相机的id每个相机在采集前必须要设置图片存储位置2.3. 曝光时间可通过滑动条或者数字调节相机的帧率超过相机上限改大了也没用2.4. 图像尺寸改的是视场显示的区域而不是像素分辨率2.5. 程序可以实现自由连续采集同步单次采集和同步连续采集三个功能。自由连续采集每个相机自由连续采集不保持图像同步单次采集每个相机同步采集单张图片并保存同步连续采集每个相机连续同步采集多张图片并自动保存2.6. 有延时存储的功能能实现特定时间间隔的图像采集不能小于相机单帧时间间隔主要用在同步连采功能2.7. 尝试了官方给的PTP协议来调控同步时差不过没做好功能可以忽略没用3. 注意细节3.1. 自由连采时可以不用设置图片保存地址如果设置了在自由连采时会持续保存图片在电脑上。3.2. 有时候同步连采会因为数据传输不稳定出现图像丢失可能会导致某个相机的某张图像漏掉只要保证每个相机的图像编号是对上的那么这些图像就是同步性对应的或者说时间戳是同步的。比如相机1存储是 1 2 3 5 6相机2存储是 12 3 6两个相机的图像1,2,3, 6还是同步的。通过图像编号判断能避免相机因传输不稳定导致的图像采集对应性问题。3.3. 程序核心是软件触发因此传输线的带宽限制、代码执行效率硬件条件等因素都可能会影响同步性因此该程序比较适合低速或者静止状态的多视角测量。用两个相机测试了下程序的同步性硬件是千兆网线以及常规笔记本采用手机上的毫秒表作为标度结果显示程序实现的同步效果还是有效的。多次测试下来的结果同步误差大概在20ms-50ms左右。测试也没有发现异常bug程序写了一些异常提示给予一些操作上的提示。