15. 摄像头#
本章配套视频介绍:
《40-在鲁班猫上使用摄像头》
https://www.bilibili.com/video/BV1q14y1275u/
注意
Debian系统ISP问题于2026年1月已经修复,如果需要在Debian系统使用摄像头请使用2026年1月镜像或更加新的镜像,否则摄像头无法正常使用。如果是Ubuntu系统也建议使用新日期镜像。
15.1. 摄像头支持列表#
15.1.1. mipi摄像头#
LubanCat-RK3576系列板卡支持mipi摄像头,目前适配了ov8858、imx415、gc08a8、gc2053、gc4653摄像头
购买链接:
15.1.2. uvc摄像头#
LubanCat-RK3576系列板卡支持uvc摄像头,如果想要购买uvc摄像头,可以参照下面的参考链接
购买链接(仅供参考):
15.2. 摄像头接口#
危险
MIPI接口不支持热插拔,请勿在上电的时候安装或者卸载, 上电时安装和卸载可能会导致板卡短路, 轻则板卡保护关机,重则损坏芯片的接口或者烧坏芯片
15.2.1. LubanCat-3#
CAM0 CAM1 CAM2 CAM3 CAM4 均可独立接摄像头,其中 CAM0 为 4 lane ,其余为 2 lane ,摄像头默认关闭,由 /boot/uEnv/uEnv.txt 文件进行配置。
鲁班猫3摄像头接口规格为2*15Pin 0.4mm的BTB插座。
鲁班猫3与摄像头模块的连接如下图所示:
正面:
背面:
15.2.2. LubanCat-3 BTB/金手指#
CAM0 CAM1 CAM2 CAM3 CAM4 均可独立接摄像头,其中 CAM0 为 4 lane ,其余为 2 lane ,摄像头默认关闭,由 /boot/uEnv/uEnv.txt 文件进行配置。
鲁班猫3 BTB/金手指摄像头接口规格为24Pin 0.5mm的FPC插座。
鲁班猫3 BTB/金手指与摄像头模块的连接如下图所示:
15.3. 单摄#
下面以Ubuntu22系统进行讲解:
15.3.1. 开启方法#
现在以 开启 CAM0 为例子,其余摄像头打开方法类似
1# 打开配置文件
2vi /boot/uEnv/uEnv.txt
找到带有
CAM0的设备树插件,将设备树插件前面的#删除,保存文件,然后重启即可生效,文件改动如下图
15.3.2. 关闭方法#
现在以关闭 CAM0 为例子, CAM1 CAM2 的关闭方法类似
1# 打开配置文件
2vi /boot/uEnv/uEnv.txt
找到
CAM0的设备树插件,将设备树插件前面添加#,保存文件,然后重启即可生效,文件改动如下图
15.3.3. 摄像头节点#
查看摄像头节点:
1#查看摄像头设备
2v4l2-ctl --list-devices
3
4#信息输出如下
5rkisp-statistics (platform: rkisp):
6 /dev/video17
7 /dev/video18
8
9rkcif (platform:rkcif-mipi-lvds):
10 /dev/video0
11 /dev/video1
12 /dev/video2
13 /dev/video3
14 /dev/video4
15 /dev/video5
16 /dev/video6
17 /dev/video7
18 /dev/video8
19 /dev/video9
20 /dev/video10
21 /dev/media0
22
23rkisp_mainpath (platform:rkisp-vir0):
24 /dev/video11
25 /dev/video12
26 /dev/video13
27 /dev/video14
28 /dev/video15
29 /dev/video16
30 /dev/video19
31 /dev/media1
32
33rkvpss_scale0 (platform:rkvpss-vir0):
34 /dev/video21
35 /dev/video22
36 /dev/video23
37 /dev/video24
38 /dev/media2
一般操作rkisp_mainpath对应的第一个设备,以上为/dev/video11。
15.3.4. 摄像头信息#
查看摄像头信息:
1#查看支持的格式
2v4l2-ctl --list-formats-ext --device=/dev/video11
3
4#信息输出如下
5ioctl: VIDIOC_ENUM_FMT
6 Type: Video Capture Multiplanar
7
8 [0]: 'UYVY' (UYVY 4:2:2)
9 Size: Stepwise 32x32 - 3840x2160 with step 8/8
10 [1]: 'NV16' (Y/UV 4:2:2)
11 Size: Stepwise 32x32 - 3840x2160 with step 8/8
12 [2]: 'NV61' (Y/VU 4:2:2)
13 Size: Stepwise 32x32 - 3840x2160 with step 8/8
14 [3]: 'NV21' (Y/VU 4:2:0)
15 Size: Stepwise 32x32 - 3840x2160 with step 8/8
16 [4]: 'NV12' (Y/UV 4:2:0)
17 Size: Stepwise 32x32 - 3840x2160 with step 8/8
18 [5]: 'NM21' (Y/VU 4:2:0 (N-C))
19 Size: Stepwise 32x32 - 3840x2160 with step 8/8
20 [6]: 'NM12' (Y/UV 4:2:0 (N-C))
21 Size: Stepwise 32x32 - 3840x2160 with step 8/8
15.3.5. 查看摄像头帧率#
1#查看摄像头帧率
2v4l2-ctl -d /dev/video11 \
3 --set-fmt-video=width=1920,height=1080,pixelformat='MJPG' \
4 --stream-mmap=4 \
5 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 \
6 --stream-count=500
以上命令分辨率可根据实际最大分辨率进行修改,以下为imx415摄像头帧率输出信息:
15.3.6. 命令行拍摄照片#
1sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video11 ! jpegenc ! filesink location=picture.jpg
15.3.7. 命令行拍摄视频#
1# 录制视频
2v4l2-ctl --verbose -d /dev/video11 --set-fmt-video=width=3840,height=2160,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=3840,height=2160 --stream-to=out.yuv
3
4# 播放视频
5ffplay -f rawvideo -video_size 3840x2160 -pixel_format nv12 out.yuv
15.3.8. 预览摄像头#
1#预览摄像头,格式、分辨率和帧率可根据实际修改
2gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink
15.4. 多摄#
当开启多个摄像头时,设备节点会变化,需要根据实际确认编号,以下是开启两个摄像头时的信息。
1#查看摄像头设备
2v4l2-ctl --list-devices
3
4#信息输出如下
5rkisp-statistics (platform: rkisp):
6 /dev/video28
7 /dev/video29
8 /dev/video37
9 /dev/video38
10
11rkcif (platform:rkcif-mipi-lvds):
12 /dev/video0
13 /dev/video1
14 /dev/video2
15 /dev/video3
16 /dev/video4
17 /dev/video5
18 /dev/video6
19 /dev/video7
20 /dev/video8
21 /dev/video9
22 /dev/video10
23 /dev/media0
24
25rkcif-mipi-lvds1 (platform:rkcif-mipi-lvds1):
26 /dev/media1
27
28rkisp_mainpath (platform:rkisp-vir0):
29 /dev/video22
30 /dev/video23
31 /dev/video24
32 /dev/video25
33 /dev/video26
34 /dev/video27
35 /dev/video30
36 /dev/media2
37
38rkisp_mainpath (platform:rkisp-vir1):
39 /dev/video31
40 /dev/video32
41 /dev/video33
42 /dev/video34
43 /dev/video35
44 /dev/video36
45 /dev/video39
46 /dev/media3
47
48rkvpss_scale0 (platform:rkvpss-vir0):
49 /dev/video41
50 /dev/video42
51 /dev/video43
52 /dev/video44
53 /dev/media4
54
55rkvpss_scale0 (platform:rkvpss-vir1):
56 /dev/video45
57 /dev/video46
58 /dev/video47
59 /dev/video48
60 /dev/media5
从以上信息可见,有两个rkisp_mainpath节点,其第一个设备分别为/dev/video22、/dev/video31,那么/dev/video22就是对应第一个摄像头, /dev/video31对应第二个摄像头。
例如进行拍照可以执行:
1#第一个摄像头拍照
2sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video22 ! jpegenc ! filesink location=picture.jpg
3
4#第二个摄像头拍照
5sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video31 ! jpegenc ! filesink location=picture.jpg