尋找與選取相機#
應用程式在能夠使用相機之前,必須先偵測哪些相機可用。這個過程稱為「清點」。
列舉相機#
與消費級相機(例如網路攝影機)不同,工業相機並不會自動與單一應用程式的綁定。相反地,情況如下:
- 可同時連接多台攝影機。
- 攝影機可透過不同的傳輸層進行連接,例如 USB、GigE 等。
- 攝影機可能會動態地出現或消失,例如因熱插拔或網路變更所致。
透過枚舉,您的應用程式可達成以下目標:
- 偵測所有目前可用的攝影機。
- 可靠地識別它們。
- 請根據您的任務選擇合適的相機。
範例#
傳輸層工廠是進入 Pylon 生態系統的入口點。它負責執行以下任務:
- 探索相機。
- 建立裝置實例。
- 將底層的傳輸層(例如 USB、GigE 等)進行抽象化處理。
不妨將它視為一個裝置管理員。
此方法會回傳一個裝置描述符清單。每個項目都包含關於已偵測到相機的元資料,例如:
- 型號名稱
- 序號(唯一識別碼)
- 介面類型(USB、GigE 等)
for device_info in device_info_list:
print(device_info.GetFriendlyName())
print(device_info.GetSerialNumber())
心智模型#
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))
索引#
資訊
不建議使用索引,因為順序可能會因連接的攝影機數量而有所變化。
應用情境#
單鏡頭系統#
使用 pylon.InstantCamera(pylon.FirstFound).
主要特點:
- 足以用於測試簡單的設置。
- 對於單一攝影機的使用情境,您可以透過將所需的屬性以字典形式傳入,讓 pylon 自動偵測您的攝影機。
- 不建議用於多攝影機的應用情境。
多相機系統#
Basler 建議先對裝置進行枚舉。之後,您可以透過其唯一識別碼(例如序號)來選取所需的攝影機,以避免多次裝置枚舉所造成的額外負擔。
- 列出所有攝影機。
- 根據序號或使用者自訂名稱來映射攝影機。
生產系統#
- 將攝影機識別碼儲存於設定檔中。
- 在啟動時驗證是否存在。
- 若未偵測到預期的攝影機,請立即終止執行。
重點摘要#
枚舉至關重要,因為它能讓您的應用程式:
- 能適應硬體變更
- 與連接順序無關
- 可擴展至多台攝影機
若未進行適當的編號,系統便會變得脆弱且難以維護。