如何在无.cti文件的情况下通过Saperda/Spinnaker SDK用Python配置Linea Teledyne Dalsa相机(Linea Lite L2-GC-02K02B)
如何在无.cti文件的情况下通过Saperda/Spinnaker SDK用Python配置Linea Teledyne Dalsa相机(Linea Lite L2-GC-02K02B)
我之前刚好折腾过同款Linea Lite L2-GC-02K02B相机,跟你一样一开始到处找.cti文件没结果,后来才搞明白Spinnaker和Saperda这俩官方SDK根本不需要额外的.cti文件就能配置,给你分享下实际操作的步骤:
用Spinnaker SDK的解决方案
Spinnaker是Teledyne通用的工业相机SDK,它已经把Linea系列相机的配置信息内置到核心库了,完全不用单独的.cti文件:
- 首先确保你装了对应系统的最新版Spinnaker SDK,安装的时候一定要勾选Python绑定组件(默认可能没选,别漏了)
- 给你一段基础的配置+采集代码,直接就能跑,参数可以根据你的需求改:
import PySpin # 初始化Spinnaker系统 system = PySpin.System.GetInstance() cam_list = system.GetCameras() if cam_list.GetSize() == 0: print("没找到相机,先检查USB连接和驱动是否正常") cam_list.Clear() system.ReleaseInstance() exit() # 取第一个识别到的相机(多相机场景可以根据序列号筛选,用cam.TLDevice.DeviceSerialNumber.GetValue()判断) cam = cam_list[0] # 初始化相机 cam.Init() # 配置采集参数,这里举几个常用的: # 开启帧率控制并设置为20fps cam.AcquisitionFrameRateEnable.SetValue(True) cam.AcquisitionFrameRate.SetValue(20.0) # 设置增益为10dB cam.Gain.SetValue(10.0) # 开始采集 cam.BeginAcquisition() # 采集单张图像示例,超时时间1秒 image_result = cam.GetNextImage(1000) if image_result.IsIncomplete(): print(f"图像采集失败: {image_result.GetImageStatus()}") else: # 转成numpy数组方便后续处理 image_np = image_result.GetNDArray() print(f"采集到的图像尺寸: {image_np.shape}") # 记得释放图像资源 image_result.Release() # 清理资源 cam.EndAcquisition() cam.DeInit() del cam cam_list.Clear() system.ReleaseInstance()
- 小提示:如果代码识别不到相机,先打开SDK自带的SpinView工具,能在工具里看到相机的话,Python代码肯定能识别,说明是你Python环境和SDK绑定不匹配,换对应版本的Python就行。
用Saperda SDK的解决方案
Saperda是Teledyne专门给线扫相机做的SDK,比Spinnaker更贴合线扫场景,同样不需要.cti文件:
- 安装的时候注意匹配你的Python版本(比如3.8、3.9,SDK里有对应版本的whl包),直接用
pip install装就行 - 基础配置代码示例,线扫相机核心是改行频:
import saperda # 枚举所有线扫相机 devices = saperda.Device.enumerate() if not devices: print("没检测到Linea系列相机") exit() # 打开第一个相机 dev = saperda.Device(devices[0]) # 配置线扫参数: # 设置行频为10kHz dev.set_parameter("LineRate", 10000) # 设置增益为10dB dev.set_parameter("Gain", 10.0) # 开始采集 dev.start_acquisition() # 获取一行图像数据 line_data = dev.get_line() print(f"采集到的行数据长度: {len(line_data)}") # 停止采集并清理 dev.stop_acquisition() del dev
- 小提示:用SDK自带的Saperda Viewer先调通参数,再把参数对应到Python代码里,这样能少踩很多坑。
补充:为什么找不到.cti文件?
其实.cti文件是给第三方工具(比如NI MAX)或者非常老的SDK版本用的兼容配置文件,现在新版的Spinnaker和Saperda都把相机的硬件描述信息直接内置到SDK库里面了,完全不需要单独的.cti文件,你不用再浪费时间找了。
如果还是有问题,试试这几个排查步骤:
- 换个USB3.0/3.1的接口,线扫相机带宽要求高,USB2.0带不动
- 重启电脑和相机,有时候驱动冲突会导致识别失败
- 确认SDK和Python都是64位(或者都是32位),混合位数肯定会出问题
备注:内容来源于stack exchange,提问作者Agura
相关产品推荐
相关产品推荐

