ZED使用指南(七)Video Recording

3、视频录制

ZED使用Stereolabs的SVO格式存储视频和数据,如时间戳和传感器数据。

在GUI或命令行模式下使用ZED Explorer或ZED API录制SVO视频。

(1)压缩模式

SVO视频可以用压缩模式录制,无损和压缩模式可以保持图像质量或减少文件大小。

ZED使用指南(七)Video Recording_第1张图片

硬件编码的好处

为了获得最佳性能,建议使用H.264和H.265录制模式,因为这种模式可以使用内置在NVIDIA显卡中基于硬件的编码器(NVENC)。通过将编码卸载到NVENC,GPU和CPU可以自由地进行其他操作。例如,在计算量大的场景中,可以在对主程序影响最小的情况下全帧速率录制视频。

压缩质量

在给定的比特率下,硬件编码质量可能因GPU而异。NVIDIA GPU(RTX 20系列,Jetson Xavier)上更新的NVENC编码器通常会产生比老一代GPU (GTX 10系列,Jetson Nano)上的编码器更好的质量。

(2)多个相机录制

可用连接到同一台PC的多个相机录制视频。

(3)使用录制API

视频录制

录制SVO文件,要用enablerrecording()启用Recording模块。指定一个输出文件名(output.svo)和SVO_COMPRESSION_MODE,然后保存每个抓取的帧。SVO可以记录视频和相关的数据(时间戳、IMU数据等)。

# Create a ZED camera object
zed = sl.Camera()

# Enable recording with the filename specified in argument
output_path = sys.argv[0]
err = zed.enable_recording(output_path, sl.SVO_COMPRESSION_MODE.H264)

while not exit_app:
    # Each new frame is added to the SVO file
    zed.grab()

# Disable recording
zed.disable_recording()

视频回放

要播放SVO文件,在setFormSVOFile()中添加文件路径作为参数。

当SVO文件被完全读取时,返回END_OF_SVOFILE_REACHED错误码。

# Create a ZED camera object
zed = sl.Camera()

# Set SVO path for playback
input_path = sys.argv[1]
init_parameters = sl.InitParameters()
init_parameters.set_from_svo_file(input_path)

# Open the ZED
zed = sl.Camera()
err = zed.open(init_parameters)

svo_image = sl.Mat()
while not exit_app:
  if zed.grab() == sl.ERROR_CODE.SUCCESS:
    # Read side by side frames stored in the SVO
    zed.retrieve_image(svo_image, sl.VIEW.SIDE_BY_SIDE)
    # Get frame count
    svo_position = zed.get_svo_position();
  elif zed.grab() == sl.ERROR_CODE.END_OF_SVOFILE_REACHED:
    print("SVO end has been reached. Looping back to first frame")
    zed.set_svo_position(0)

你可能感兴趣的:(ZED2,计算机视觉,人工智能)