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

《40-在鲁班猫上使用摄像头》
https://www.bilibili.com/video/BV1q14y1275u/
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
的设备树插件,将设备树插件前面的#
删除,保存文件,然后重启即可生效,文件改动如下图

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

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
|