lumenera公司的INFINITY3S-1URM相机不提供官方的pythonSDK,在实际应用中更加常用的是使用其官方提供的LabVIEW或者Matlab的SDK。无论使用上述那种控制方式,在使用前均应安装相应相机的驱动程序,否则程序会报错:
下载完成后打开相应应用程序安装驱动。
在使用python控制相机时,lumenera公司提供了非官方的pythonSDK,但好像只有使用联系过其技术支持的邮箱才能下载。在这里我更推荐第三方开发的lucam库,在Github上有相应项目可以搜到,但值得注意的是,该库已经不再积极更新。下面是该库最基本的应用:
from lucam import Lucam
camera = Lucam()
# 拍一张图片,可接受回调函数作为参数
image = camera.TakeSnapshot()
# 保存图片
camera.SaveImage(image, ‘data.tif’)
将上述代码加入循环,可以很方便的采集大量图片。
在进行光学实验上的应用时,如调控一次SLM并采集一次图片,可能需要把循环加入线程中进行,否则会导致副屏图片亦即SLM屏不刷新。
至于调控相机的一些参数,需要利用lucam中的API类:
from lucam import Lucam, API
camera = Lucam()
# 调整曝光时间
camera.SetProperty(API.LUCAM_PROP_EXPOSURE, 3)
其它参数的调控可以查看lucam库源码,找到对应的参数名进行调控。
lucam库中提供了生成当前相机捕获到的画面的函数,但是该函数调用后生成的画面会卡死,出现程序未响应等情况,即使放在线程中也是如此。目前笔者通过不断读取刷新图片实现显示相机的实时画面,但会出现帧率不够等问题。如果后续解决了这一问题会及时记录。