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

Python程式設計人員指南#

本主題提供專屬於 Basler Stereo mini 相機的資訊。此處並未旨在提供關於官方 Basler pylon Python 語言繫結的全面概觀。

官方的 Basler pylon Python 語言繫結為 pypylon 專案。pypylon 是託管於 GitHub 上的開源專案。您必須使用 26.04 或更新版本才能使用 Basler Stereo mini 相機。

如果您對 pypylon 不熟悉,Basler 建議您先閱讀 pypylon documentation 來熟悉 pypylon API。

先決條件#

  • Python 3.9 或更新版本
  • pypylon 程式庫
  • NumPy 程式庫
  • OpenCV 程式庫
  • Open3D 程式庫(選用,用於視覺化)

安裝#

安裝 pypylon#

若要在 Python 中使用 Stereo mini 相機,請安裝 pypylon 套件:

pip install pypylon

此套件提供適用於 pylon SDK 的 Python 繫結。

針對提供的範例集,請安裝各範例資料夾中的相依性:

  • SimpleGrab/requirements.txt
  • ShowPointCloud/requirements.txt
  • LeftAndRightIntensity/requirements.txt

快速入門#

執行範例#

用於 Stereo mini 的 pylon 補充套件包含一些 Python 程式設計範例,說明如何使用 Python 和 pypylon 存取 Stereo mini 相機。

The Python samples are located in the C:\Program Files\Basler\pylon\Development\Samples\Stereo_mini\Python folder.

The Python samples are located in the /opt/pylon/share/pylon/Samples/Stereo_mini/Python folder.

The Python samples are located in the /opt/pylon/share/pylon/Samples/Stereo_mini/Python folder.

資訊

在建置範例之前,請將包含範例的資料夾複製到您具有寫入權限的任意位置。

若要執行 Python 範例,請切換至包含該範例的資料夾並使用 Python 執行它。範例:

python SimpleGrab.py

如果您在執行範例時遇到問題,請參閱Troubleshooting主題。

範例清單#

  • SimpleGrab:示範如何從 Stereo mini 相機擷取影像,並存取色彩與深度資料。
  • ShowPointCloud:示範如何使用 Open3D 從 Stereo mini 相機擷取並視覺化點雲。
  • LeftAndRightIntensity:示範如何使用 OpenCV 顯示來自 Stereo mini 相機的左右強度串流。

如需更多詳細資訊,請參閱 Python 範例目錄中的範例程式碼。

如何透過 Stereo mini 相機使用 pypylon#

匯入所需的模組#

from pypylon import pylon

import numpy as np

連接至相機#

以下範例示範如何使用 pypylon 開啟第一個可用的 Stereo mini 相機:

# Create Stereo mini filter to avoid opening a non-Stereo-mini device
di = pylon.DeviceInfo()
di.SetDeviceClass("BaslerGTC/Basler/Stereo_mini")

camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice(di))

print(f"Using camera: {camera.GetDeviceInfo().GetFriendlyName()}")

camera.Open()

若要開啟特定的 Stereo mini 相機,請在建立相機之前設定序號或使用者定義名稱:

# Open a specific Stereo mini camera by serial number
di.SetSerialNumber("12345678")

# Open a specific Stereo mini camera by user-defined name
di.SetUserDefinedName("MyStereoMini")

存取相機 Property#

您可以透過以下方式存取相機 Property: camera 物件,例如:

# Example parameter access
camera.ExposureTime.Value = 5000  # microseconds
camera.Gain.Value = 5.0

print(f"ExposureTime: {camera.ExposureTime.Value}")
print(f"Gain: {camera.Gain.Value}")

擷取影像#

以下範例示範如何從 Stereo mini 相機擷取影像:

camera.StartGrabbing()

grab_result = camera.RetrieveResult(5000, pylon.TimeoutHandling_ThrowException)

if grab_result.GrabSucceeded():
    data_container = grab_result.GetDataContainer()
    print(f"Components: {data_container.DataComponentCount}")

grab_result.Release()

存取深度資料#

Stereo mini 相機提供強度與範圍元件。範例使用:

  • Coord3D_C16 用於 16-bit 範圍數值
  • Coord3D_ABC32f 用於直接 XYZ 點資料
# Configure range format
camera.ComponentSelector.Value = "Range"
camera.PixelFormat.Value = "Coord3D_C16"