故障排除#
重点在于实用的调试策略和典型的故障场景。
典型症状与原因#
| 症状 | 可能原因 |
|---|---|
| 未检测到相机 | 驱动程序缺失、线缆问题、SDK 未安装 |
超时发生在 RetrieveResult() | 触发配置错误、无信号、超时时间设置不当 |
| 丢帧 | 带宽受限、处理速度慢 |
| 采集错误 | 网络不稳定、丢包 |
| 应用程序无响应 | 阻塞调用、死锁、队列溢出 |
相机检测问题#
要解决相机检测问题,您有两个选择:
-
检查硬件:
- 验证线缆连接。
- 请检查相机电源。
- 尝试更换 USB port 或以太网线。
-
检查软件:
- 确保已安装 pylon SDK。
- 验证驱动程序是否已加载。
- 使用 pylon Viewer 进行测试。
超时问题#
常见原因#
- 启用了 Trigger Mode 但无触发信号
- Exposure Time 太长
- 超时值过低
排查策略#
禁用触发以进行测试:
采集错误#
指示器#
常见原因#
- 网络拥堵 (GigE)
- 带宽不足
- 连接不稳定
图像损坏与丢帧#
常见原因#
- 丢包 (GigE 相机)
- CPU 过载
- 缓冲区不足
缓解策略#
- 启用巨型帧。
- 增加
MaxNumBuffer. - 减小 ROI 或帧率。
性能问题#
指示器#
- 延迟上升
- 增加队列大小
- 丢帧
排查策略#
- 测量帧率。
- 监控 CPU 使用率。
- 检查队列大小。
线程问题#
指示器#
- 由于阻塞导致的死锁
queue.get() - 线程在关闭时未停止
修复#
-
使用超时设置:
-
使用停止信号:
OpenCV GUI 问题#
指示器#
典型原因#
- 在工作线程中执行 GUI 函数
解决方法#
- 运行
cv2.imshow()仅在主线程中。
网络问题 (GigE)#
指示器#
- 丢包
- 丢帧
缓解策略#
- 使用专用的网络接口卡 (NIC)
- 启用巨型帧。
- 调整数据包延迟。
排错检查清单#
第一步是确定问题是由哪一层引起的。
检查是否存在以下问题指标:
- 是否检测到了相机?
- pylon Viewer 是否正常工作?
- 您是否已正确配置
TriggerMode? - 带宽是否充足?
- CPU 是否过载?
- 队列是否阻塞?
日志记录建议#
使用结构化日志记录代替 print:
核心要点#
- 大多数问题都与配置或时序有关。
- 始终将硬件问题与软件问题隔离开来。
- 持续监控系统资源。
- 使用系统化的调试方法。