15. 摄像头¶
本章配套视频介绍:

《40-在鲁班猫上使用摄像头》
https://www.bilibili.com/video/BV1q14y1275u/
15.2. 摄像头接口¶
鲁班猫4摄像头接口规格为2*15Pin 0.4mm的BTB插座,鲁班猫5摄像头接口规格为24Pin 0.5mm间距的FPC插座
1.鲁班猫4与摄像头模块的连接如下图所示:

2.鲁班猫5与摄像头模块的连接如下图所示:
正面:

背面:

15.3. LubanCat-4¶
LubanCat-4板卡目前仅支持 imx415摄像头
,最大支持三个 imx415摄像头
同时运行。
下面以debian11系统进行讲解:
15.3.1. 单摄¶
CAM0
CAM1
CAM2
均可独立接摄像头 ,摄像头默认关闭,由 /boot/uEnv/uEnv.txt
文件进行配置
15.3.1.1. 开启方法¶
现在以 开启 CAM0
为例子, CAM1
CAM2
的打开方法类似
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到带有
CAM0
的设备树插件,将设备树插件前面的#
删除,保存文件,然后重启即可生效,文件改动如下图

15.3.1.2. 关闭方法¶
现在以关闭 CAM0
为例子, CAM1
CAM2
的关闭方法类似
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
CAM0
的设备树插件,将设备树插件前面添加#
,保存文件,然后重启即可生效,文件改动如下图

15.3.2. 双摄¶
CAM0
CAM1
CAM2
均可独立接摄像头 ,摄像头默认关闭,由 /boot/uEnv/uEnv.txt
文件进行配置
双摄可以任意搭配使用
CAM0
和CAM1
CAM0
和CAM2
CAM1
和CAM2
15.3.2.1. 开启方法¶
现在以 开启 CAM0
和 CAM1
为例子,另外两种方法也是类似
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
CAM0
和CAM1
的设备树插件,将设备树插件前面的#
删除,保存文件,然后重启即可生效,文件改动如下图

15.3.2.2. 关闭方法¶
现在以关闭 CAM0
和 CAM1
为例子,另外两种方法也是类似
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
CAM0
CAM1
的设备树插件,将设备树插件前面添加#
,保存文件,然后重启即可生效,文件改动如下图

15.3.2.3. 摄像头节点¶
双摄摄的摄像头的节点是 /dev/video22
和 /dev/video31
如果开启的是 CAM0
和 CAM1
对应的节点分别是 /dev/video22
和 /dev/video31
1 2 | gst-launch-1.0 v4l2src device=/dev/video22 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink &
gst-launch-1.0 v4l2src device=/dev/video31 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink &
|
15.3.3. 三摄¶
CAM0
CAM1
CAM2
均可独立接摄像头 ,摄像头默认关闭,由 /boot/uEnv/uEnv.txt
文件进行配置
15.3.3.1. 开启方法¶
现在以 开启 CAM0
和 CAM1
为例子,另外两种方法也是类似
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
CAM0
CAM1
CAM2
的设备树插件,将设备树插件前面的#
删除,保存文件,然后重启即可生效,文件改动如下图

15.3.3.2. 关闭方法¶
现在以关闭 CAM0
和 CAM1
为例子,另外两种方法也是类似
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
CAM0
CAM1
CAM2
的设备树插件,将设备树插件前面添加#
,保存文件,然后重启即可生效,文件改动如下图

15.3.3.3. 摄像头节点¶
双摄摄的摄像头的节点是 /dev/video33
/dev/video42
/dev/video51
如果开启的是 CAM0
CAM1
CAM2
对应的节点分别是 /dev/video33
/dev/video42
/dev/video51
1 2 3 | gst-launch-1.0 v4l2src device=/dev/video33 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink &
gst-launch-1.0 v4l2src device=/dev/video42 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink &
gst-launch-1.0 v4l2src device=/dev/video51 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink &
|
15.4. LubanCat-5¶
注意
鲁班猫5的cam0、cam1为4lane接口,imx415插件可以满足 4K@30fps
& 1080P@60fps
的分辨率配置,而cam2~cam5是2lane接口,所以仅能支持 4K@15fps
& 1080P@60fps
的分辨率配置。
LubanCat-5板卡支持 imx415摄像头
,最大支持六个 imx415摄像头
同时运行。
其中imx415摄像头支持两种分辨率,分别是4K、1080P。在设备树配置文件上也有做区分,详情可以看下面的配置展示图片。
下面以Debian 11系统进行讲解
CAM0
CAM1
CAM2
CAM3
CAM4
CAM5
均可独立接摄像头 ,摄像头默认关闭,由 /boot/uEnv/uEnv.txt
文件进行配置。
现在以 开启 CAM0
为例子, 其他接口的打开方法类似。
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
cam
下面带有cam0
的设备树插件,将设备树插件前面的#
删除,保存文件,然后重启即可生效,文件改动如下图

现在以关闭 CAM0
为例子, 其它接口的关闭方法类似
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
cam
下面带有cam0
的设备树插件,将设备树插件前面添加#
,保存文件,然后重启即可生效,文件改动如下图

单摄的摄像头的节点是 /dev/video11
1 | gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink
|
CAM0
CAM1
CAM2
CAM3
CAM4
CAM5
均可独立接摄像头 ,摄像头默认关闭,由 /boot/uEnv/uEnv.txt
文件进行配置
现在以 开启 CAM0
和 CAM1
为例
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
cam
下面带有cam0
cam1
的设备树插件,将设备树插件前面的#
删除,保存文件,然后重启即可生效,文件改动如下图

现在以关闭 CAM0
和 CAM1
为例子,其他方法也是类似
1 2 | # 打开配置文件
vi /boot/uEnv/uEnv.txt
|
找到
cam
下面带有cam0
cam1
的设备树插件,将设备树插件前面添加#
,保存文件,然后重启即可生效,文件改动如下图

双摄摄的摄像头的节点是 /dev/video22
和 /dev/video31
如果开启的是 CAM0
和 CAM1
对应的节点分别是 /dev/video22
和 /dev/video31
1 2 | gst-launch-1.0 v4l2src device=/dev/video22 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink &
gst-launch-1.0 v4l2src device=/dev/video31 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink &
|
15.5. 摄像头操作¶
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
root@lubancat:~# 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/CbCr 4:2:2)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[2]: 'NV61' (Y/CrCb 4:2:2)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[3]: 'NV21' (Y/CrCb 4:2:0)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[4]: 'NV12' (Y/CbCr 4:2:0)
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[5]: 'NM21' (Y/CrCb 4:2:0 (N-C))
Size: Stepwise 32x32 - 3840x2160 with step 8/8
[6]: 'NM12' (Y/CbCr 4:2:0 (N-C))
Size: Stepwise 32x32 - 3840x2160 with step 8/8
root@lubancat:~#
|
可以看到当前摄像头支持UYVY、NV12、NV16等格式,支持的最大分辨率为3840x2160
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 | v4l2-ctl --all --device /dev/video11
# 实际演示
cat@lubancat:~$ v4l2-ctl --all --device /dev/video11
Driver Info:
Driver name : rkisp_v6
Card type : rkisp_mainpath
Bus info : platform:rkisp0-vir0
Driver version : 2.2.1
Capabilities : 0x84201000
Video Capture Multiplanar
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04201000
Video Capture Multiplanar
Streaming
Extended Pix Format
Media Driver Info:
Driver name : rkisp0-vir0
Model : rkisp0
Serial :
Bus info :
Media version : 5.10.160
Hardware revision: 0x00000000 (0)
Driver version : 5.10.160
Interface Info:
ID : 0x03000007
Type : V4L Video
Entity Info:
ID : 0x00000006 (6)
Name : rkisp_mainpath
Function : V4L2 I/O
Pad 0x01000009 : 0: Sink
Link 0x0200000a: from remote pad 0x1000004 of entity 'rkisp-isp-subdev': Data, Enabled
Priority: 2
Format Video Capture Multiplanar:
Width/Height : 3840/2160
Pixel Format : 'UYVY' (UYVY 4:2:2)
Field : None
Number of planes : 1
Flags :
Colorspace : BT.2020
Transfer Function : Rec. 709
YCbCr/HSV Encoding: BT.2020
Quantization : Full Range
Plane 0 :
Bytes per Line : 7680
Size Image : 16588800
Selection Video Capture: crop, Left 0, Top 0, Width 3840, Height 2160, Flags:
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 3840, Height 2160, Flags:
Selection Video Output: crop, Left 0, Top 0, Width 3840, Height 2160, Flags:
Selection Video Output: crop_bounds, Left 0, Top 0, Width 3840, Height 2160, Flags:
Image Processing Controls
pixel_rate 0x009f0902 (int64) : min=0 max=1000000000 step=1 default=1000000000 value=356800000 flags=read-only, volatile
|
1 | sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video11 ! jpegenc ! filesink location=picture.jpg
|
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
|
1 | gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink
|