Jetson Linux API 参考文档

32.7.4 版本
12_camera_v4l2_cuda (摄像头捕获 CUDA 处理)


概述

本示例演示了如何从 V4L2 YUV 类型摄像头捕获图像,并将图像流与 NVIDIA® CUDA® 引擎共享,以便在左上角绘制一个黑色方框。


构建和运行

前提条件

  • 您已按照 构建和运行 中的步骤 1-3 进行操作。
  • 如果您是从主机 Linux PC (x86) 构建,则您已按照 构建和运行 中的步骤 4 进行操作。
  • 您需要以下硬件
    • V4L2 摄像头 (USB 或 YUV 摄像头,格式为 YUYV/YVYU/UYVY/VYUY)
    • 显示器

构建

  • 输入
      $ cd 12_camera_v4l2_cuda
      $ make
    

运行

  • 输入

      $ ./camera_v4l2_cuda -d /dev/video0 -s 1280x720 -f YUYV -c
    

    -c 选项启用 CUDA 处理。

  • 或输入

      $ ./camera_v4l2_cuda -d /dev/video0 -s 640x480 -f YUYV -n 30 -c
    

    -n 选项在视频转换器处理之前保存第 n 帧。

查看支持的选项

  • 使用 -h 选项。


流程

下图显示了数据流经此示例的流程。

框图

Block Diagram


关键结构和函数

本示例定义了以下表格中列出的结构和函数。

结构描述
context_t全局结构,用于保存 V4L2 摄像头、CUDA 和 EglRenderer 的上下文。


函数描述
init_components初始化 V4L2 摄像头和 EglRenderer。
prepare_buffers为 capture_plane 分配缓冲区。然后,它与 V4L2 摄像头、CUDA 和 EglRenderer 共享缓冲区。
start_stream启动 V4L2 摄像头流。
start_capture用于入队和出队缓冲区的主线程。
stop_stream停止 V4L2 摄像头流。
. All rights reserved.