14. 摄像头

LubanCat-sg200x系列板卡使用的摄像头接口是24pin mipi接口,目前适配了树莓派OV5647的摄像头,但isp无法使用,图像是绿色的,其他型号摄像头仍在适配中,请耐心等待。

除了mipi摄像头外,LubanCat-sg200x系列板卡还支持UVC摄像头。

14.1. mipi摄像头

待添加….

14.2. uvc摄像头

LubanCat-sg200x系列板卡支持使用USB UVC摄像头,以下介绍UVC摄像头的使用方法。

以下测试野火在售的 USB UVC摄像头

14.2.1. 安装工具

安装v4l-utils和gstreamer1.0软件包:

1
2
3
#安装软件包
sudo apt install v4l-utils
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good

14.2.2. 连接摄像头

将摄像头插入USB HOST接口,然后拔动切换开关向USB A口方向,切换为host,USB-OTG切换开关可以理解成物理接口的切换开关 切换到USB A接口方向时,主控的USB信号通往USB A接口;切换到Type-C接口方向时,主控的USB信号通往Type-C接口。

../../_images/camera_0.jpg

将拨码开关拨到USB A口方向后,仍需要软件配置usb口为host模式,因为系统默认设置usb为device模式,需要执行以下命令进行切换host。

1
2
#临时切换host模式
sudo sh -c 'echo host > /proc/cviusb/otg_role'

具体usb otg切换方法可以参考: USB 章节。

14.2.3. 查看摄像头信息

14.2.3.1. 列出摄像头设备

通过v4l2-ctl查看摄像头设备,如果只接了一个摄像头,那么其中/dev/video0就是我们的摄像头的设备。

1
2
3
4
5
6
7
8
#列出摄像头设备
v4l2-ctl --list-devices

#信息输出如下
USB camera: USB camera (usb-4340000.usb-1.4):
     /dev/video0
     /dev/video1
     /dev/media0

14.2.3.2. 查看摄像头格式和分辨率

 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
#查看支持的格式

ioctl: VIDIOC_ENUM_FMT
      Type: Video Capture

      [0]: 'MJPG' (Motion-JPEG, compressed)
               Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 640x360
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 352x288
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 320x240
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 1280x720
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 1600x1200
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 1920x1080
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 2048x1536
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 2560x1440
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 2592x1944
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
      [1]: 'YUYV' (YUYV 4:2:2)
               Size: Discrete 1280x720
                        Interval: Discrete 0.100s (10.000 fps)
               Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 320x240
                        Interval: Discrete 0.033s (30.000 fps)
               Size: Discrete 1600x1200
                        Interval: Discrete 0.200s (5.000 fps)
               Size: Discrete 1920x1080
                        Interval: Discrete 0.200s (5.000 fps)
               Size: Discrete 2048x1536
                        Interval: Discrete 0.333s (3.000 fps)
               Size: Discrete 2560x1440
                        Interval: Discrete 0.333s (3.000 fps)
               Size: Discrete 2592x1944
                        Interval: Discrete 0.333s (3.000 fps)

可以看到当前摄像头支持MJPG、YUYV等格式,支持的最大分辨率为2592x1944。

14.2.4. 命令行拍摄照片

1
2
#拍摄照片
sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video0 ! jpegenc ! filesink location=picture.jpg

生成的picture.jpg就是拍摄出来的照片了

14.2.5. 命令行拍摄视频

1
2
#拍摄视频
v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=640,height=480,pixelformat='mjpg' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=640,height=480 --stream-to=out.yuv

生成的out.yuv 便是拍摄出来的视频了