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

核心概念#

收購生命週期#

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

心智模型#

  • 攝影機以非同步方式運作。
  • Python 會以同步方式擷取資料。
  • 緩衝區將這兩個領域解耦。

阻擋行為#

處理速度過慢可能會導致積壓和畫面遺漏。您可以為 RetrieveResult() 以避免無止境地等待抓取結果。

RetrieveResult() → Waits until frame or timeout

GenICam 節點#

什麼是GenICam 節點?#

一個`GenICam ` 節點代表攝影機的單一可配置功能或屬性。這些節點在 `GenICam ` 標準中有所定義,該標準提供了一種統一的方式,可獨立於硬體供應商來存取攝影機的功能。

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

  • 姓名(例如: ExposureTime)
  • 資料類型(例如:浮點數、整數、枚舉等)
  • 存取權限(唯讀或讀寫)
  • 有效的數值範圍或選項

在 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.

常見的節點類型#

參數 範例 描述
浮動 ExposureTime 映射至離散硬體設定的連續數值
整數 Width 離散值
枚舉 TriggerMode 預定義字串值
布林值 AcquisitionFrameRateEnable 對/錯
命令 ExecuteSoftwareTrigger 執行一項動作

了解節點至關重要,因為pypylon 中的所有相機設定都是透過節點來執行的。

電塔參數#

pylon 參數會封裝GenICam 節點,並提供一套擴展且一致的介面,用於讀取和寫入值。它們同時負責處理類型轉換、範圍檢查以及存取模式的處理。

若找不到該節點,則 pylon.PlaceholderParameter 會傳回此值,讓您的程式碼能妥善處理節點缺失的情況。這種情況常見於系統設定中,因為不同的相機型號或韌體版本可能具備不同的可用功能。

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

設定參數

若要變更某些參數,必須先停止資料擷取:

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