本教程简单的对ZED相机进行了配置和打开,然后打印出ZED 相机的串口号,接着关闭相机。
准备工作
- 由于ZED SDK在GPU上运算,因此需要先在 nvidia.com下载最新版的Cuda。
- 然后,需要在 stereolabs.com下载对应于Cuda的ZED SDK。- 更多API请看ZED API documentation.
前言
通过ZED API很容易控制相机和配置参数。在使用ZED的过程中需要先创建和打开相机对象。API可以在两种输入模式下工作:实时模式和SOV格式记录模式(录像模式)。
相机配置
首先需要创建Camera
对象,接着需要通过InitParameters
来创建参数对象,初始化参数对象可以调整相机的分辨率, 每秒传输帧数(FPS:Frames Per Second), 坐标单位等等。这些参数在相机打开之前被初始化,在相机使用中不可以更改。InitParameters
对象包含很多参数,具体可以查看官方文档。你可以设置以下的参数:
- 相机配置参数,通过使用
camera_*
,包括(resolution, image flip…); - SDK配置参数,通过使用
sdk_*
,包括(verbosity, GPU device used…); - 深度配置参数,通过使用
depth_*
,包括(depth mode, minimum distance…); - 坐标系配置参数,通过使用
coordinate_*
,包括(coordinate system, coordinate units…); - 配置SVO视频格式的参数(filename, real-time mode…)。
获取相机参数
可以获取每个摄像头的参数,诸如:焦距、视场、立体校准等
- 焦距:fx, fy- 焦点:cx, cy
- 镜头畸变:k1, k2
- 水平和垂直视野
- 立体校准:左右镜头转动和移动这些参数都包含在
CalibrationParameters
对象中,他们可以通过getCameraInformation()
获得。
代码分析
import pyzed.sl as sl
def main():
# Create a Camera object
zed = sl.Camera()
# Create a InitParameters object and set configuration parameters
init_params = sl.InitParameters()
init_params.sdk_verbose = False
# Open the camera
err = zed.open(init_params)
if err != sl.ERROR_CODE.SUCCESS:
exit(1)
# Get camera information (ZED serial number)
zed_serial = zed.get_camera_information().serial_number
print("Hello! This is my serial number: {0}".format(zed_serial))
# Close the camera
zed.close()
if __name__ == "__main__":
main()