3.4.2 参考示例(C++)
本章节介绍多媒体库开发的多种功能示例,包括摄像头图像采集、视频编解码、视频显示、算法推理等功能。
摄像头图像采集和显示
本示例vio2display示例实现了MIPI摄像头图像采集功能,并通过HDMI接口输出,用户可通过显示器预览画面。
示例流程框图:
-
环境准备:
- 开发板断电状态下, 将
MIPI摄像头接入开发板,目前该 sample 仅支持 MIPI sensor: IMX219, SC230AI - 通过 HDMI 线缆连接开发板和显示器
- 开发板上电,并通过命令行登录
- 开发板断电状态下, 将
-
运行方式: 示例代码以源码形式提供,需要使用
make命令进行编译后运行,步骤如下:sunrise@ubuntu:~$ cd /app/cdev_demo/vio2display
sunrise@ubuntu:/app/cdev_demo/vio2display$ make
sunrise@ubuntu:/app/cdev_demo/vio2display$ ./vio2display -w 1920 -h 1080参数说明:
- -w: sensor 输出宽度
- -h: sensor 输出高度
-
预期效果: 程序正确运行后,开发板会通过显示器输出
MIPI摄像头采集的实时画面。运行 log 如下:sunrise@ubuntu:/app/cdev_demo/vio2display$ ./vio2display -w 1920 -h 1080
[UCP]: log level = 3
[UCP]: UCP version = 3.7.3
[VP]: log level = 3
[DNN]: log level = 3
[HPL]: log level = 3
[UCPT]: log level = 6
disp_w=1920, disp_h=1080
2025/06/16 10:12:21.574 !INFO [CamInitParam][0295]set camera fps: -1,width: 1920,height: 1080
mipi mclk is not configed.
Searching camera sensor on device: /proc/device-tree/soc/vcon@0 i2c bus: 1 mipi rx phy: 0
WARN: Sensor Name: ar0820std-30fps, Expected Chip ID: 0xCB34, Actual Chip ID Read: 0x00
[0] INFO: Found sensor name:imx219-30fps on mipi rx csi 0, i2c addr 0x10, config_file:linear_1920x1080_raw10_30fps_1lane.c
2025/06/16 10:12:21.575 !INFO [CamInitPymParam][0258]Setting PYM channel:0: crop_x:0, crop_y:0, input_width:1920, input_height:1080, dst_w:1920, dst_h:1080
sp_open_camera success!
2025/06/16 10:12:21.727 !INFO [OpenDisplay][0111]Wayland is available, using Wayland for rendering.
Using default socket path: /run/user/1000/wayland-0
Press 'q' to Exit !
摄像头图像本地保存
本示例 vio_capture 示例实现了 MIPI 摄像头图像采集,并将 RAW 和 YUV 两种格式的图像本地保存的功能。示例流程框图如下:
示例流程框图:
-
环境准备:
- 开发板断电状态下,将
MIPI摄像头接入开发板, 目前该 sample 仅支持 MIPI sensor: IMX219, SC230AI - 开发板上电,并通过命令行登录
- 开发板断电状态下,将
-
运行方式: 示例代码以源码形式提供,需要使用
make命令进行编译后运行,步骤如下:sunrise@ubuntu:~$ cd /app/cdev_demo/vio_capture/
sunrise@ubuntu:/app/cdev_demo/vio_capture$ make
sunrise@ubuntu:/app/cdev_demo/vio_capture$ ./capture -b 10 -c 10 -w 1920 -h 1080参数说明:
- -b: RAW 图 bit 数,例如 IMX219支持格式为 RAW10,则 bit 数为10。sensor 支持格式可参考配件清单
- -c: 保存图像的数量,获取到每张图像的时间间隔一般为1/fps
- -w: 保存图像的宽度
- -h: 保存图像的高度
-
预期效果: 程序正确运行后,当前目录保存指定数量的图片文件,
RAW格式以raw_*.raw方式命名,YUV格式以yuv_*.yuv方式命名。运行 log 如下:sunrise@ubuntu:/app/cdev_demo/vio_capture$ ./capture -b 10 -c 10 -w 1920 -h 1080
[UCP]: log level = 3
[UCP]: UCP version = 3.7.3
[VP]: log level = 3
[DNN]: log level = 3
[HPL]: log level = 3
[UCPT]: log level = 6
2025/06/04 22:24:22.139 !INFO [CamInitParam][0296]set camera fps: -1,width: 1920,height: 1080
mipi mclk is not configed.
Searching camera sensor on device: /proc/device-tree/soc/vcon@0 i2c bus: 1 mipi rx phy: 0
WARN: Sensor Name: ar0820std-30fps, Expected Chip ID: 0xCB34, Actual Chip ID Read: 0x00
[0] INFO: Found sensor name:imx219-30fps on mipi rx csi 0, i2c addr 0x10, config_file:linear_1920x1080_raw10_30fps_1lane.c
2025/06/04 22:24:22.140 !INFO [CamInitPymParam][0259]Setting PYM channel:0: crop_x:0, crop_y:0, input_width:1920, input_height:1080, dst_w:1920, dst_h:1080
capture time :0
temp_ptr.data_size[0]:2592000
... 省略 ...
capture time :9
temp_ptr.data_size[0]:2592000