疑難排解#
重點在於實用的偵錯策略與常見的失敗情境。
常見症狀與原因#
| 症狀 | 可能原因 |
|---|---|
| 未偵測到相機 | 缺少驅動程式、連接線問題、未安裝 SDK |
發生逾時於 RetrieveResult() | 觸發設定錯誤、無訊號、逾時時間設定錯誤 |
| 掉幀 | 頻寬限制、處理速度緩慢 |
| 擷取錯誤 | 網路不穩定、封包遺失 |
| 應用程式凍結 | 封鎖呼叫、死結、佇列溢位 |
相機偵測問題#
若要解決相機偵測問題,您有兩種選擇:
-
檢查硬體:
- 確認連接線連接。
- 確認相機電源。
- 嘗試使用不同的 USB 連接埠或乙太網路連接線。
-
檢查軟體:
- 確保已安裝 pylon SDK。
- 確認已載入驅動程式。
- 使用 pylon Viewer 進行測試。
逾時問題#
典型原因#
- 已啟用 Trigger Mode 但無觸發訊號
- Exposure Time 過長
- 逾時值過低
除錯策略#
停用觸發以進行測試:
擷取錯誤#
指標#
典型原因#
- 網路壅塞 (GigE)
- 頻寬不足
- 連線不穩定
影像損壞與掉幀#
典型原因#
- 封包遺失 (GigE 攝影機)
- CPU 過載
- 緩衝區不足
減緩策略#
- 啟用巨型封包 (Jumbo Frames)。
- 增加
MaxNumBuffer. - 減少 ROI 或幀率。
效能問題#
指標#
- 延遲增加
- 佇列大小增加
- 掉幀
除錯策略#
- 測量幀率。
- 監控 CPU 使用率。
- 檢查佇列大小。
執行緒問題#
指標#
- 由於封鎖造成的死結
queue.get() - 執行緒在關閉時未停止
修正方式#
-
使用逾時:
-
使用停止訊號:
OpenCV GUI 問題#
指標#
典型原因#
- 在背景工作執行緒中執行 GUI 函式
修正#
- 執行
cv2.imshow()僅在主執行緒中。
網路問題 (GigE)#
指標#
- 封包遺失
- 掉幀
減緩策略#
- 使用專用網路介面卡 (NIC)
- 啟用巨型封包 (Jumbo Frames)。
- 調整封包延遲。
偵錯檢查清單#
第一步是識別是哪個層級造成此問題。
尋找以下問題指標:
- 是否已偵測到相機?
- pylon Viewer 是否正常運作?
- 您是否已正確設定
TriggerMode? - 頻寬是否充足?
- CPU 是否過載?
- 佇列是否正在封鎖?
記錄建議#
使用結構化記錄而非 print:
重點摘要#
- 大多數問題都與組態或時序有關。
- 務必將硬體問題與軟體問題隔離開來。
- 持續監控系統資源。
- 採用系統化的除錯方法。