15. 摄像头#

本章配套视频介绍:

../../_images/video.png

《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摄像头

购买链接:

  1. (野火)mipi-ov8858

  2. (野火)mipi-imx415

  3. (野火)mipi-gc08a8

  4. (野火)mipi-gc2053

  5. (野火)mipi-gc4653

15.1.2. uvc摄像头#

LubanCat-RK3576系列板卡支持uvc摄像头,如果想要购买uvc摄像头,可以参照下面的参考链接

购买链接(仅供参考):

  1. (淘宝)野火OV5693/OV2720/OV9726 USB免驱动摄像头适用于鲁班猫系列产品

  2. (淘宝)USB高清广角摄像头模组电脑安卓1080p免驱动工业级人脸识别树莓派

  3. (淘宝)高清200万像素1080P 720P免驱USB摄像头Linux安卓Ubuntu树莓派UVC

  4. (淘宝)亚博智能 树莓派USB摄像头 1080P高清AI视觉识别120帧Jetson nano

  5. (淘宝)1080P高清usb工业摄像头模组广角摄影头电脑安卓树莓派鱼眼免驱动

  6. (轮趣)RGB相机C100金属外壳高清视频1080P摄像头C70大FOV

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与摄像头模块的连接如下图所示:

正面:

can not find

背面:

can not find

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/金手指与摄像头模块的连接如下图所示:

can not find

15.3. 单摄#

下面以Ubuntu22系统进行讲解:

15.3.1. 开启方法#

现在以 开启 CAM0 为例子,其余摄像头打开方法类似

1# 打开配置文件
2vi /boot/uEnv/uEnv.txt
  • 找到带有 CAM0 的设备树插件,将设备树插件前面的 # 删除,保存文件,然后重启即可生效,文件改动如下图

LubanCat-2

15.3.2. 关闭方法#

现在以关闭 CAM0 为例子, CAM1 CAM2 的关闭方法类似

1# 打开配置文件
2vi /boot/uEnv/uEnv.txt
  • 找到 CAM0 的设备树插件,将设备树插件前面添加 # ,保存文件,然后重启即可生效,文件改动如下图

LubanCat-2

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摄像头帧率输出信息:

../../_images/cam_imx415_fps.jpg

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