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

尋找與選擇相機#

本主題說明尋找與選擇要操作之相機的流程。

在應用程式可以使用相機之前,必須先尋找有哪些相機可用。此過程稱為列舉。

列舉相機#

與消費型相機(例如網路攝影機)不同,工業相機並不會自動繫結至單一應用程式。相反地,情況如下:

  • 可能會同時連接多部相機。
  • 相機可能透過不同的傳輸層連接,例如 USB、GigE 等。
  • 相機可能會動態出現或消失,例如由於熱插拔或網路變更。

列舉可讓您的應用程式達成以下目的:

  • 偵測目前可用的所有相機。
  • 可靠地識別它們。
  • 為您的任務選擇正確的相機。

範例#

factory = pylon.TlFactory.GetInstance()

transport layer factory 是進入 pylon 生態系統的切入點。它負責以下任務:

  • 尋找相機。
  • 建立裝置執行個體。
  • 對底層傳輸層進行抽象化,例如 USB、GigE 等。

可以將其視為裝置管理員。

device_info_list = factory.EnumerateDevices()

這會傳回裝置描述項清單。每個項目都包含有關偵測到的相機的中繼資料,例如:

  • 型號名稱
  • 序號(唯一識別碼)
  • 介面類型(USB、GigE 等)
for device_info in device_info_list:
    print(device_info.GetFriendlyName())
    print(device_info.GetSerialNumber())

Mental Model#

System Startup
     ↓
Transport Layers Scan for Devices
     ↓
Detected Camera List (Enumeration)
     ↓
Application selects a camera

選擇相機#

您可透過序號或使用索引來選擇相機。

這是選擇相機的建議方法。

serial_number = "123456"

for device_info in device_info_list:
    if device_info.GetSerialNumber() == serial_number:
        camera = pylon.InstantCamera(factory.CreateDevice(device_info))

索引#

device_info_list[0]

資訊

不建議使用索引,因為順序可能會根據連接的相機數量而改變。

使用案例#

單相機系統#

使用 pylon.InstantCamera(pylon.FirstFound).

主要特點:

  • 足以用於測試簡單的設定。
  • 對於單相機使用情境,您可以透過傳遞所需的 Property 作為字典,讓 pylon 尋找您的相機。
  • 不建議用於多相機使用情境。
camera = pylon.InstantCamera({pylon.SerialNumberKey : serial_number}, pylon.FirstFound)

多相機系統#

Basler 建議先列舉裝置。之後,您可以透過其唯一識別碼(例如序號)來選擇所需的相機,以避免多次裝置列舉帶來的額外開銷。

  • 列舉所有相機。
  • 透過序號或使用者定義的名稱對應相機。

生產系統#

  • 將相機識別碼儲存在設定檔中。
  • 在啟動時驗證存在性。
  • 如果找不到預期的相機,則快速失敗。

重點整理#

列舉至關重要,因為它能使您的應用程式具備以下特點:

  • 對硬體變更具備強健性
  • 獨立於連接順序
  • 可擴充至多台相機

若沒有適當的列舉,系統將會變得脆弱且難以維護。