跳至內容
測試伺服器
開發伺服器

核心概念#

擷取生命週期#

Camera → Transport → Buffer Queue → Application
                         ↑
                   RetrieveResult()

心智模型#

  • 相機以非同步方式執行。
  • Python 以同步方式進行擷取。
  • 緩衝區將兩個網域解耦。

阻塞行為#

處理速度過慢可能會導致積壓並丟棄影格。您可以為 RetrieveResult() 指定合適的逾時值,以避免無限期地等待抓取結果。

RetrieveResult() → Waits until frame or timeout

GenICam 節點#

什麼是 GenICam 節點?#

一個 GenICam 節點代表相機的單一可設定功能或屬性。節點是在 GenICam 標準中定義的,該標準提供了一種統一的方式來存取相機功能,且與硬體廠商無關。

每個節點的行為都類似於強型別參數,並公開各種資訊:

  • 名稱(例如: ExposureTime)
  • 資料類型(例如:Float、Integer、Enumeration 等)
  • 存取權限(唯讀或讀/寫)
  • 有效數值範圍或選項

在 pypylon 中,節點是以相機物件的屬性形式進行存取,並提供如下所示的方法:

exposure_time = camera.ExposureTime   # Read exposure time in microseconds.
camera.ExposureTime.Value = 3000  # Value is in microseconds. Check Increment and ValueRange for valid values.

常見節點類型#

參數 範例 描述
Float ExposureTime 對應至離散硬體設定的連續值
整數 Width 離散值
Enumeration TriggerMode 預先定義的字串值
布林值 AcquisitionFrameRateEnable True/False
命令 ExecuteSoftwareTrigger 執行動作

理解節點至關重要,因為 pypylon 中的所有相機組態都是透過節點進行的。

pylon 參數#

pylon 參數包裝了 GenICam 節點,並提供了一個擴充且一致的介面來讀取和寫入數值。它們還處理型別轉換、範圍檢查和存取模式處理。

如果找不到節點,則會傳回 pylon.PlaceholderParameter ,這可讓您的程式碼妥善處理遺失的節點。在不同相機型號或韌體版本可能具有不同可用功能的設定中,這通常是一種常見的情況。

var = camera.NotThere.GetValueOrDefault(1)
camera.NotThere.TrySetValue(3000)

設定參數

若要變更特定參數,必須先停止擷取:

camera.StopGrabbing()
camera.Width.Value = 640
camera.StartGrabbing()