|
前言 在嵌入式视觉应用中,USB 摄像头是最常用的图像采集设备。本文基于龙芯 2K2000 开发板和 Qt 框架,讲解 UVC 摄像头的采集、显示完整实现方案,包含工程编译、板端部署、功能验证全流程,帮助开发者快速搭建嵌入式视觉应用原型。 一、开发环境前置条件本文基于上一篇搭建的 Qt 交叉编译环境进行开发,需提前完成: 1. LoongOS 交叉编译工具链安装 2. Qt 交叉编译环境配置 3. 开发板运行 Loongnix 桌面系统 工具链环境加载命令: source /opt/LoongOS/v0.1/environment-setup-loongarch64-Loongson-linux 二、CameraDemo 工程编译2.1 工程结构说明CameraDemo 是基于 Qt Widgets 开发的摄像头应用,核心文件包括: · camera.h/camera.cpp:摄像头采集控制模块 · showplay.h/showplay.cpp:图像显示模块 · camera.ui/showplay.ui:界面布局文件 · CameraDemo.pro:Qt 工程配置文件 2.2 完整编译步骤# 1. 解压工程 tar -zxvf CameraDemo.tar.gz cd CameraDemo # 2. 加载交叉编译环境 source /opt/LoongOS/v0.1/environment-setup-loongarch64-Loongson-linux # 3. 清理旧编译产物 make clean # 4. 生成Makefile qmake # 5. 移除不兼容编译参数 sed -i 's/-mtune=la264//g' Makefile # 6. 多线程编译 make -j4 编译成功后会生成可执行文件CameraDemo,文件格式为 loongarch64 ELF。 三、板端部署与运行3.1 程序部署1. 将整个CameraDemo文件夹拷贝到 U 盘 2. U 盘插入开发板 USB 接口 3. 复制文件夹到开发板桌面目录 3.2 硬件连接将 UVC 标准 USB 摄像头插入开发板的 USB 接口,龙芯 2K2000 内核已集成 UVC 驱动,无需额外安装。可通过以下命令确认设备识别: ls /dev/video* 正常情况下会出现/dev/video0设备节点。 3.3 运行程序cd ~/桌面/CameraDemo chmod +x CameraDemo ./CameraDemo 3.4 运行效果程序启动后会自动枚举摄像头支持的格式和分辨率,终端输出示例: supported formats: YUYV 4:2:2, YUYV Default frame rate for this format 30 fps Supported resolutions are: 640x480 352x288 320x240 160x120 1280x720 1280x960 supported formats: Motion-JPEG, MJPG GUI 界面提供以下功能: · 实时预览摄像头画面 · 拍照保存功能 · 预览暂停 / 继续 · 相册查看 四、核心技术实现解析4.1 摄像头采集原理Qt Multimedia 模块提供了QCamera类来操控摄像头,底层通过 V4L2 框架与内核交互。龙芯平台的 UVC 驱动完全符合 V4L2 标准,因此可以直接使用 Qt 标准 API。 4.2 图像显示优化嵌入式平台性能有限,显示优化要点: 1. 优先使用 MJPEG 格式,降低 CPU 解码负载 2. 根据屏幕分辨率选择合适的采集分辨率 3. 使用QLabel+QPixmap显示,避免复杂渲染 4.3 常见问题排查1. 找不到设备节点:检查摄像头是否为 UVC 标准,更换 USB 接口重试 2. 画面卡顿:降低分辨率或切换到 MJPEG 格式 3. 程序启动报错:检查 Qt 运行库是否完整,可通过ldd CameraDemo查看依赖 五、扩展开发方向基于本 Demo 可以扩展以下功能: 1. 人脸识别:集成 RKNN 或 NCNN 推理框架,实现 AI 检测 2. 视频录制:添加视频编码保存功能 3. 网络传输:将画面通过 RTSP/HTTP 推流 4. 多摄像头切换:支持多路摄像头采集 总结本文介绍了龙芯 2K2000 平台 USB 摄像头 Qt 应用的完整开发流程,从编译部署到功能验证,给出了可直接落地的操作步骤。Qt 的跨平台特性大幅降低了嵌入式 GUI 开发门槛,结合龙芯处理器的稳定表现,可以快速构建各类工业视觉、智能终端应用。
|