Jetson Linux API 参考

32.7.4 版本
09_camera_jpeg_capture (libargus & libjpeg-8b)

概述

本示例演示如何使用 libargus 创建相机对象并作为帧生产者接口,以便 EGL 图像渲染器可以显示、预览或执行图像捕获到 JPEG 文件。


构建和运行

前提条件

  • 您已按照构建和运行中的步骤 1-3 进行操作。
  • 如果您是从主机 Linux PC (x86) 构建,则您已按照构建和运行中的步骤 4 进行操作。
  • 您已连接相机。

构建

  • 输入
     $ cd /usr/src/jetson_multimedia_api/samples/09_camera_jpeg_capture
     $ make
    

运行

  • 输入
     $ ./camera_jpeg_capture [OPTIONS]
    

捕获的预览流可以通过 HDMI 显示。JPEG 文件存储在当前目录中。

查看支持的选项

   $ ./camera_jpeg_capture -h


流程

下图显示了样本中数据的流向。

该示例使用生产者和消费者模型来建立从相机对象生成帧输出到连接 EGLStream 缓冲区的消费者(用于渲染预览模式)的帧流。

一旦您熟悉它,编程模型就非常简单高效。

该 API 是基于帧的跨平台用户模式 API。 设计旨在确保在消耗输出帧时实现零缓冲区复制。


主要结构和类

关于 libargus 和 EGLStream,请参考 libargus 文档。

描述
NvEglRenderer此类包含将帧渲染到 EGL 窗口的元素和函数。
NvJpegEncoder此类包含编码 JPEG 图像的元素和函数。

NvEglRendererRenderer 是封装所有视频渲染功能的类。 样本中使用的主要成员如下:

NvEglRenderer描述
NvEglRenderer::render 将 FD 渲染到 EGL 窗口。

NvJpegEncoder 是封装所有 JPEG 编码功能的类。 使用的主要成员是

NvV4l2ElementPlane描述
encodeFromFd 从 V4L2 元素导出的缓冲区的 FD 进行编码。
. All rights reserved.