Python程式設計人員指南#
官方的 Basler pylon Python 語言繫結為 pypylon 專案。pypylon 是託管於 GitHub 上的開源專案。您必須使用 26.04 或更新版本才能使用 Basler Stereo mini 相機。
如果您對 pypylon 不熟悉,Basler 建議您先閱讀 pypylon documentation 來熟悉 pypylon API。
先決條件#
安裝#
安裝 pypylon#
若要在 Python 中使用 Stereo mini 相機,請安裝 pypylon 套件:
此套件提供適用於 pylon SDK 的 Python 繫結。
針對提供的範例集,請安裝各範例資料夾中的相依性:
SimpleGrab/requirements.txtShowPointCloud/requirements.txtLeftAndRightIntensity/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 執行它。範例:
如果您在執行範例時遇到問題,請參閱Troubleshooting主題。
範例清單#
- SimpleGrab:示範如何從 Stereo mini 相機擷取影像,並存取色彩與深度資料。
- ShowPointCloud:示範如何使用 Open3D 從 Stereo mini 相機擷取並視覺化點雲。
- LeftAndRightIntensity:示範如何使用 OpenCV 顯示來自 Stereo mini 相機的左右強度串流。
如需更多詳細資訊,請參閱 Python 範例目錄中的範例程式碼。
如何透過 Stereo mini 相機使用 pypylon#
匯入所需的模組#
連接至相機#
以下範例示範如何使用 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 點資料