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

影像擷取#

本主題說明如何設定連續影像擷取,並針對擷取策略提供建議。

持續收購#

此範例說明如何使用 LatestImageOnly 抓取策略.

with pylon.InstantCamera(pylon.FirstFound) as camera:
    camera.StartGrabbing(pylon.GrabStrategy_LatestImageOnly)

    while camera.IsGrabbing():
        with camera.RetrieveResult(5000) as grab_result:
            if grab_result.GrabSucceeded():
                image = grab_result.Array

擷取策略#

抓取策略用以定義當攝影機產生的幀速率高於應用程式處理速度時,系統應如何在內部緩衝區佇列中處理影像。

簡單來說,它們解答了這樣一個問題:當應用程式仍在處理舊影像時,若有新影像送達,該如何處理?

有兩種常見的抓取策略:

  • 僅顯示最新圖片:
    • 僅保留最新的圖片。
    • 較舊的畫框可予以丟棄。
  • OneByOne:
    • 所有幀都會被排入佇列,並依序處理。
    • 不會丟失任何幀(除非發生緩衝區溢出)。

以下幾點或可協助您決定何時該採用哪種策略:

  • 使用 LatestImageOnly 適用於:
    • 即時顯示
    • 圖形使用者介面 (GUI)
    • 低延遲系統
  • 使用 OneByOne 適用於:
    • 檢測系統
    • 錄製
    • 確定性處理

關於權衡取捨與內部運作的詳細說明,請參閱「效能優化」主題。

心智模型#

Camera → [F1, F2, F3, F4]

LatestImageOnly:
                → Keep F4 only

OneByOne:
                → Process F1 → F2 → F3 → F4