概述
近年来,物联网与 AI 技术发展迅速,物联网设备的感知与融合能力持续提升,机器视觉技术在社交、娱乐、教育和医疗等领域也取得了显著进展。
esp-video 作为一款全新的 Camera 相机应用框架,致力于为开发者提供更好、更高效、更具性价比的视觉应用开发体验。
设计目标
esp-video 的设计目标是:简单易用、性能优先、效果统一、扩展灵活。

- 简单易用:相机框架的应用接口按照 V4L2 (Video for Linux two) 标准实现,用户像操作普通文件一样,使用
open()函数即可快速打开设备。 - 性能优先:通过对内部软硬件协同的设计,优化图像处理算法 (IPA),提升拍照启动、预览和拍照过程中的性能体验。
- 效果统一:该框架支持的芯片包括 ESP32-S3、ESP32-P 系列和 ESP32-C 系列的芯片。此外,该框架通过对底层接口实现统一的抽象层代码,实现了控制方法的统一。比如不同型号的相机传感器,以及相机系统中的 ISP、codec、VCM 等设备,开发者都可以通过
ioctl()控制这些设备的属性。如下图所示,常见的四种相机接口:MIPI-CSI、DVP、SPI、USB,均可以通过open()函数打开设备,并通过ioctl()函数控制其工作属性。

- 扩展灵活:相机框架不仅允许用户对已经支持的相机增加新的配置,也允许用户添加新的相机外设驱动并且扩展新的控制命令。
框架简介
esp-video 框架采用分层设计:

- 驱动层:提供 MIPI-CSI、DVP、SPI、I2C、I3C、ISP、JPEG、H.264 等外设的底层驱动。
- 设备层:对相机系统使用的各种设备适配抽象接口,确保开发者接入系统时花费最低的成本,同时保证系统的兼容性。
- 中间件管理层:当需要对相机系统发送命令时,该层接口查找对应的设备,对该设备发送控制命令,并将处理结果回传给应用。
- 应用层:向用户提供统一的 API 来简化编程。
如何使用
- 查看支持的 Video 设备。
- 在代码中通过
open()接口打开设备。 - 然后通过
ioctl(fd, VIDIOC_DQBUF, ...)获取图像数据。 - 使用图像数据后,通过调用
ioctl(fd, VIDIOC_QBUF, ...)将存储图像的内存返回到内存池。

一个简单的从图像传感器获取数据的示例可以参考 capture_stream. 更多示例请参考 esp-video/examples。
在 esp_cam_sensor 组件中查询支持的相机传感器列表。
应用示例:
- ESP32 系列的芯片拥有丰富的网络连接功能,包括 Wi-Fi、BLE、Zigbee、Ethernet
等,通过设备的网络传输能力,用户可以将采集的图像、视频发送到千里之外。 - 分段式拍照:可以与 ESP32 系列芯片的 Mesh 网络功能相结合,通过分段式拍照,实现低功耗设备执行探测,高功耗设备执行视频采集的功能。
- AI 应用:ESP32-S 和 ESP32-P 系列的芯片具备端侧 AI 能力,通过使用 esp-dl、esp-who
等方案,用户可以实现人脸识别、锚脸识别、运动探测、颜色识别、条码识别等功能;也可以为云端 AI 提供边缘检测、人形检测等预处理功能。目前,ESP32 系列的芯片已经实现的应用包括远程宠物投喂器、远程抄表、远程作业批改、医疗检测、人形检测应用等。

- 多摄像头协同工作:
典型的拥有多摄像头的产品是手机,以 iPhone 11 Pro 系列为例,其搭载主摄 + 长焦 + 短焦(超广角)共三个摄像头,每个摄像头各有所长。
在物联网产中,使用多个摄像头的常见场景是:
1)近焦相机 + 远焦相机,前者负责拍摄近距离的物体,后者负责拍摄远距离的物体。
2)彩色相机 + 黑白相机,彩色相机负责采集彩色图像,黑白相机负责采集黑白图像。通常,黑白相机在夜视方面拥有更高的灵敏度。
3)扩展视场角、实现类似环视拍摄的效果。如下图所示的远程会议相机,通过两个允许控制方向的相机模组,分别拍摄会议桌两侧的参会人员。

esp-video 支持同时连接多个相机传感器,你可以在 simple_video_server 示例中测试该功能。下图为同时在 P4-EV-Board 开发板上同时应用多个摄像头模组的演示:

Multiple Cameras on P4-EV-Board
esp-video 与 esp32-camera
| 支持的 SOC | 高帧率实时性 | 支持 ISP | 支持高速视频编码 | |
|---|---|---|---|---|
| esp-video | ESP32-S3、ESP32-P 系列、ESP32-C 系列 | 好 | 是 | 是 |
| esp32-camera | ESP32、ESP32-S2、ESP32-S3 | 一般 | 否 | 否 |
结语
如果你正在寻找能够快速搭建相机应用的解决方案,esp-video 值得深入了解。其简洁友好的开发接口,以及活跃的开源社区支持,将为你的项目提供坚实的技术保障与更多扩展可能。
1305

被折叠的 条评论
为什么被折叠?



