13. 摄像头

本章配套视频介绍:

../../_images/video.png

《40-在鲁班猫上使用摄像头》

https://www.bilibili.com/video/BV1q14y1275u/

13.1. 摄像头支持列表

13.1.1. mipi摄像头

LubanCat-RK3576系列板卡支持mipi摄像头,目前仅适配imx415。

购买链接:

(野火)mipi-imx415

13.2. 摄像头接口

鲁班猫3摄像头接口规格为2*15Pin 0.4mm的BTB插座。

1.鲁班猫3与摄像头模块的连接如下图所示:

正面:

can not find

背面:

can not find

13.3. LubanCat-3

LubanCat-3板卡目前仅支持 imx415摄像头 ,最大支持5个 imx415摄像头 同时运行。

下面以debian12系统进行讲解:

13.3.1. 单摄

CAM0 CAM1 CAM2 CAM3 CAM4``均可独立接摄像头 ,摄像头默认关闭,由 ``/boot/uEnv/uEnv.txt 文件进行配置

13.3.1.1. 开启方法

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

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

LubanCat-2

13.3.1.2. 关闭方法

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

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

LubanCat-2

13.3.1.3. 摄像头节点

查看摄像头节点

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#查看摄像头设备
v4l2-ctl --list-devices

#信息输出如下
rkisp-statistics (platform: rkisp):
      /dev/video17
      /dev/video18

rkcif (platform:rkcif-mipi-lvds):
      /dev/video0
      /dev/video1
      /dev/video2
      /dev/video3
      /dev/video4
      /dev/video5
      /dev/video6
      /dev/video7
      /dev/video8
      /dev/video9
      /dev/video10
      /dev/media0

rkisp_mainpath (platform:rkisp-vir0):
      /dev/video11
      /dev/video12
      /dev/video13
      /dev/video14
      /dev/video15
      /dev/video16
      /dev/video19
      /dev/media1

rkvpss_scale0 (platform:rkvpss-vir0):
      /dev/video21
      /dev/video22
      /dev/video23
      /dev/video24
      /dev/media2

一般操作rkisp_mainpath对应的第一个设备,以上为/dev/video11。

13.3.1.4. 摄像头信息

查看摄像头信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#查看支持的格式
v4l2-ctl --list-formats-ext --device=/dev/video11

#信息输出如下
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

13.3.1.5. 命令行拍摄照片

使用命令行捕捉图片
1
sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video11 ! jpegenc ! filesink location=picture.jpg

13.3.1.6. 命令行拍摄视频

使用命令行录制和播放视频
1
2
3
4
5
# 录制视频
v4l2-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

# 播放视频
ffplay -f rawvideo -video_size 3840x2160 -pixel_format nv12 out.yuv

13.3.1.7. 预览摄像头

预览摄像头
1
gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink

13.3.1.8. 多摄

当开启多个摄像头时,设备节点会变化,需要根据实际确认编号,以下是开启两个摄像头时的信息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#查看摄像头设备
v4l2-ctl --list-devices

#信息输出如下
rkisp-statistics (platform: rkisp):
     /dev/video28
     /dev/video29
     /dev/video37
     /dev/video38

rkcif (platform:rkcif-mipi-lvds):
      /dev/video0
      /dev/video1
      /dev/video2
      /dev/video3
      /dev/video4
      /dev/video5
      /dev/video6
      /dev/video7
      /dev/video8
      /dev/video9
      /dev/video10
      /dev/media0

rkcif-mipi-lvds1 (platform:rkcif-mipi-lvds1):
      /dev/media1

rkisp_mainpath (platform:rkisp-vir0):
      /dev/video22
      /dev/video23
      /dev/video24
      /dev/video25
      /dev/video26
      /dev/video27
      /dev/video30
      /dev/media2

rkisp_mainpath (platform:rkisp-vir1):
      /dev/video31
      /dev/video32
      /dev/video33
      /dev/video34
      /dev/video35
      /dev/video36
      /dev/video39
      /dev/media3

rkvpss_scale0 (platform:rkvpss-vir0):
      /dev/video41
      /dev/video42
      /dev/video43
      /dev/video44
      /dev/media4

rkvpss_scale0 (platform:rkvpss-vir1):
      /dev/video45
      /dev/video46
      /dev/video47
      /dev/video48
      /dev/media5

从以上信息可见,有两个rkisp_mainpath节点,其第一个设备分别为/dev/video22、/dev/video31,那么/dev/video22就是对应第一个摄像头, /dev/video31对应第二个摄像头。

例如进行拍照可以执行:

1
2
3
4
5
#第一个摄像头拍照
sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video22 ! jpegenc ! filesink location=picture.jpg

#第二个摄像头拍照
sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video31 ! jpegenc ! filesink location=picture.jpg