Skip to main content
调整并增强现有示例应用程序,以满足特定用例需求。本节将指导您在运行 Canonical Ubuntu 的 Dragonwing 设备上,使用 Qualcomm® Intelligent Multimedia Product(QIMP)SDK 下载、构建和自定义源代码——让您完全掌控应用程序行为,并可在各运行时环境中进行性能优化。 预构建应用程序非常适合快速评估,但自定义它们可以让您:
  • 集成您自己的模型、媒体或逻辑
  • 针对特定的运行时目标(CPU、GPU、NPU)优化性能
  • 添加新功能修改现有功能以匹配您的用例
  • 使用 GStreamer 试验不同的管线配置
  • 从可运行的基线出发,构建可用于生产的应用程序
要开始在目标设备上自定义现有示例应用程序,请按照以下分步说明安装所需的依赖项并配置系统。 前提条件:
  • 完成设备设置。
  • 确保 IQ‑9075 设备正在运行 Ubuntu 操作系统。
  • 设置 Wi-Fi 并通过 SSH 访问 IQ-9075 EVK 设备。
  • 如果尚未安装 PPA 软件包,请执行安装所需软件包步骤。

安装所需软件包

要安装所需的预构建软件包,请参阅🔗安装所需软件包章节,并运行提供的”Install PPA Packages 脚本”。

从源码构建

按照以下步骤下载、配置和编译示例应用程序源代码。这样您就可以按需修改应用程序行为并集成自己的逻辑。 安装以下软件包以下载源代码:

构建依赖项

运行以下命令获取源代码编译所需的插件:

下载源代码

下载示例应用程序源代码:

示例应用程序代码讲解

我们以 gst-ai-usb-camera-app 为例进行代码讲解。这是 Qualcomm 开发的一个基于 GStreamer 的应用程序,用于演示如何将 USB 摄像头用于不同用途:
  • 在显示器上显示实时视频
  • 将视频保存到文件
  • 通过 RTSP 流式传输视频
  • 使用 AI 模型运行目标检测
gst-ai-usb-camera-app 的源代码位于:

详情

头文件和常量:
这些头文件提供以下支持:
  • GLib:实用函数和主循环
  • GStreamer:多媒体框架
  • Video4Linux2(V4L2):访问 USB 摄像头
  • JSON-GLib:从 JSON 读取配置
然后我们定义默认值:
当用户没有提供自定义设置时,将使用这些默认值。 应用程序上下文结构体:
  • GstCameraAppCtx
    此结构体保存应用程序的状态:
  • GstAppOptions
    此结构体保存来自配置文件的用户定义选项:
从 JSON 读取配置: 函数 parse_json() 读取配置文件并在 appctx 和 options 中设置值。
示例配置:
代码片段:
这会根据配置文件设置摄像头分辨率的宽度。 查找 USB 摄像头: 函数:find_usb_camera_node()
此函数遍历 /dev/video0 到 /dev/video63,以查找有效的 USB 摄像头。
创建 GStreamer 管线: 函数:create_preview_pipe()
此函数根据输出类型(显示、文件或 RTSP)构建管线。
示例 1:实时预览
v4l2src → capsfilter → waylandsink
代码:
示例 2:保存到文件
v4l2src → capsfilter → qtivtransform → v4l2h264enc → h264parse → filesink
代码:
示例 3:RTSP 流式传输
v4l2src → capsfilter → qtivtransform → v4l2h264enc → h264parse → qtirtspbin
目标检测管线: 函数:create_pipe()
此函数构建一个更复杂的、基于 AI 的目标检测管线。
管线流程:
v4l2src → capsfilter → tee → qtivcomposer → waylandsink
代码:
这些插件负责:
  • 预处理:qtimlvconverter
  • 推理:qtimltflite、qtimlsnpe 或 qtimlqnn
  • 后处理:qtimlvdetection
  • 叠加:qtivcomposer
主函数: 一切从这里开始:
这段代码将:
  • 初始化应用程序上下文
  • 读取配置文件
  • 查找 USB 摄像头
  • 构建管线
  • 运行主循环

编译示例应用工具

编译

此示例演示如何构建目标检测应用程序。
注意: 每个示例应用都需要单独编译。

运行编译好的示例应用程序

  1. 设置所需的环境变量,将 Wayland 应用程序连接到当前的用户会话。
  1. 对于 Ubuntu Desktop,运行以下命令以创建缺失的符号链接(针对 TensorFlow Lite C 库)。
  1. 使用以下命令运行 gst-ai-usb-camera-app 应用程序:
  1. 要显示可用的帮助选项,请在 SSH shell 中运行以下命令:
调试消息:
设置 GStreamer 用于控制调试消息详细程度和类别的 GST_DEBUG 环境变量。
  1. 要停止该用例,请按 CTRL + C

参考文档:

AI 开发者工作流程 - Qualcomm® IoT 平台上的 Ubuntu 文档