Python 程序员指南#
Basler pylon 的官方 Python 语言绑定是 pypylon 项目。pypylon 是托管在 GitHub 上的开源项目。您需要 26.04 或更高版本才能使用 Basler Stereo mini 相机。
如果您是 pypylon 的新手,Basler 建议您先阅读 pypylon 文档,熟悉 pypylon API。
前提条件#
安装#
安装 pypylon#
若要在 Python 中使用 Stereo mini 相机,请安装 pypylon 软件包:
此软件包提供适用于 pylon SDK 的 Python 绑定。
对于所提供的示例集,请安装各个示例文件夹中的依赖项:
SimpleGrab/requirements.txtShowPointCloud/requirements.txtLeftAndRightIntensity/requirements.txt
使用入门#
运行示例#
用于 Stereo mini 的 pylon Supplementary Package 包含一些 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 执行它。例如:
如果在运行示例时遇到问题,请查看故障排除主题。
示例列表#
- 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")
访问相机参数#
您可以通过 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 相机同时提供强度和深度(range)分量。这些示例使用:
Coord3D_C16用于 16 位深度(range)值Coord3D_ABC32f用于直接 XYZ 点数据