摄像测试
摄像头是开发板的重要输入设备。通过本次测试,您可以快速确认:
- 图像采集功能是否可用(拍照、预览、录像)
- 基础图像质量是否合格(清晰度、色彩、光线适应)
MIPI 摄像头
硬件安装
摄像测试章节采用K7 作为操作示例,仅展示MIPI 摄像头接线细节,不同型号主板 MIPI 摄像接口位置不同,请根据规格书找到对应MIPI 摄像接口。
Warning
1. 禁止在通电状态下安装/拆卸摄像头!
2. 为更好展示接线细节,摄像头采用此摆放方式,实际使用中,请勿参考此摆放方式。
- FPC 立式上拉接口:请勿直接将排线插入FPC接口,将接口处黑色模块向上拉动后接入排线,再次将黑色模块按下。

- FPC 翻盖式接口 : 请勿直接将排线插入FPC接口,将接口处黑色模块向上翻起后接入排线,再次将黑色模块按下。

命令行测试
在Linux系统中,安装 v4l2-ctl 和 GStreamer 进行摄像功能验证,v4l2-ctl 是 Linux 系统下专门用于控制和管理摄像头设备的命令行工具(快速检查摄像头是否被系统识别、调试图像参数、获取设备能力信息)。GStreamer 是一个多媒体处理框架,可以构建灵活的多媒体处理流水线(适用于视频功能测试、录像性能评估、流媒体应用开发验证)。
v4l2-ctl
v4l2-ctl 是 Linux 系统中控制 V4L2(Video4Linux2)视频设备的命令行工具,核心用于配置和查询摄像头、视频采集卡等设备参数。
安装工具
摄像头节点
- 列举摄像头设备:
操作示例:通过 rkisp_mainpath 可知有两个摄像头,一般操作对应的第一个设备 /dev/video33 和 /dev/video42。
root@linaro-alip:/#sudo v4l2-ctl --list-devices
...
rkisp_mainpath (platform:rkisp-vir0):
/dev/video33
/dev/video34
/dev/video35
/dev/video36
/dev/video37
/dev/video38
/dev/video41
/dev/media3
rkisp_mainpath (platform:rkisp-vir1):
/dev/video42
/dev/video43
/dev/video44
/dev/video45
/dev/video46
/dev/video47
/dev/video50
/dev/media4
...
摄像头信息
- 查询制定摄像头节点支持的详细格式:
操作示例:查看 /dev/video33 节点摄像头信息。
root@linaro-alip:/#sudo v4l2-ctl --list-formats-ext --device=/dev/video33
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture Multiplanar
[0]: 'UYVY' (UYVY 4:2:2)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[1]: 'NV16' (Y/UV 4:2:2)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[2]: 'NV61' (Y/VU 4:2:2)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[3]: 'NV21' (Y/VU 4:2:0)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[4]: 'NV12' (Y/UV 4:2:0)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[5]: 'NM21' (Y/VU 4:2:0 (N-C))
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[6]: 'NM12' (Y/UV 4:2:0 (N-C))
Size: Stepwise 32x32 - 3840x2160 with step 8/8
摄像头帧率
sudo v4l2-ctl -d /dev/video* \
--set-fmt-video=width=1920,height=1080,pixelformat='MJPG' \
--stream-mmap=4 \
--set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 \
--stream-count=500
操作示例:
root@linaro-alip:/#sudo v4l2-ctl -d /dev/video33 \
--set-fmt-video=width=3840,height=2160\
--stream-mmap=4 \
--set-selection=target=crop,flags=0,top=0,left=0,width=3840,height=2160 \
--stream-count=500
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.00 fps
<<<<<<<<^C
root@linaro-alip:/#
Note
命令解析:
1. v4l2-ctl -d /dev/video33:
v4l2-ctl:Video4Linux2 控制工具,用于配置和控制 V4L2 兼容的视频设备。
-d /dev/video33:指定操作的视频设备为 /dev/video33
2. --set-fmt-video=width=1920,height=1080,pixelformat='MJPG':配置视频输出格式。
width=1920,height=1080:设置视频分辨率为 1920x1080(1080P)
pixelformat='MJPG':设置像素格式为 MJPEG( Motion JPEG,一种压缩格式)
3. --stream-mmap=4:启用内存映射(mmap)方式捕获视频流,=4 表示分配 4 个缓冲区用于流捕获(多缓冲区可以减少帧丢失)。
4. --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 :设置视频裁剪区域。
target=crop:指定操作对象为裁剪区域。
flags=0:无特殊标志(默认)。
top=0,left=0,width=1920,height=1080:设置裁剪区域从左上角 (0,0) 开始,大小为 1920x1080(即使用完整画面,不裁剪)。
5. --stream-count=500:指定捕获的视频帧数为 500 帧,捕获完成后自动停止。
GStreamer
GStreamer 是一个跨平台、开源的多媒体框架,核心定位是「多媒体处理的 “管道(Pipeline)” 引擎」—— 它能将音频 / 视频的采集、编码、解码、过滤、传输、渲染等功能拆分成独立的「插件(Plugin)」,再通过灵活的 “管道” 组合,快速实现复杂的多媒体应用(比如视频播放、直播推流、音视频转码、摄像头采集等)。
安装工具
sudo apt update
sudo apt install gstreamer1.0-tools
sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
sudo usermod -aG video $USER
命令行捕获图片
sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video* ! jpegenc ! filesink location=picture.jpg
命令行预览
- autovideosink 方式:
sudo gst-launch-1.0 v4l2src device=/dev/video* ! video/x-raw,format=NV12,width=800,height=600,framerate=30/1 ! videoconvert ! autovideosink
- waylandsink 方式(gnome wayland 架构桌面使用该方式进行预览):
sudo gst-launch-1.0 v4l2src device=/dev/video* ! video/x-raw,width=1280,height=720,framerate=30/1 ! videoconvert ! waylandsink
操作示例:
sudo gst-launch-1.0 v4l2src device=/dev/video33 ! video/x-raw,width=800,height=600,framerate=30/1 ! videoconvert ! waylandsink
Note
命令解析:
1. gst-launch-1.0:GStreamer 的命令行工具,用于快速构建和运行 GStreamer 管道。
2. v4l2src device=/dev/video33:
v4l2src:视频 4Linux2 源元件,用于从符合 V4L2 标准的视频设备(如摄像头)捕获数据。
device=/dev/video33:指定要使用的视频设备文件,这里是 /dev/video33(不同设备的摄像头编号可能不同)。
3. video/x-raw,format=NV12,width=800,height=600,framerate=30/1:用于指定视频格式。
video/x-raw:表示原始未压缩视频。
format=NV12:视频像素格式为 NV12(一种常见的 YUV 格式,适合硬件加速)。
width=800,height=600:视频分辨率为 800x600。
framerate=30/1:帧率为 30 帧 / 秒。
4. videoconvert:视频格式转换元件,用于将输入视频格式转换为后续元件支持的格式(这里主要是为了适配显示元件的需求)。
5. autovideosink:自动选择合适的视频输出元件,会根据系统环境自动选择最佳的视频显示方式(如 X11、Wayland 或直接渲染等)。
USB 摄像头
- 检查USB摄像头设备结点
- 使用ffmpeg 打开摄像头
操作示例: