Camera|3.瑞芯微平台MIPI摄像头常用调试命令

原创 一口Linux 2023-02-06 11:50
点击左上方蓝色“一口Linux”,选择“设为星标


第一时间看干货文章 

【干货】嵌入式驱动工程师学习路线
【干货】一个适合初学者的Linux物联网综合项目
【干货】Linux嵌入式知识点-思维导图-免费获取



 1

Camera | 1.Camera基础知识

Camera | 2.MIPI、CSI基础


前面2篇我们讲解了camera的一些基础概念和知识。

本文主要讲述在瑞芯微平台上摄像头开发常用的调试命令。

0、环境

soc  : rk3568   
board: EVB1-DDR4-V10
软  件:Android 11
Linux:4.19.232
Camera:ov13850

1. v4l2-utils工具包

v4l-utils工具是由Linux维护的V4L2开发工具包。

它提供了一套用于配置V4L2子设备属性的V4L2和媒体框架相关工具,测试V4L2设备,并提供开发库,如libv4l2等等。

v4l-utils工具包主要包含两个常用工具,分别是media-ctl、v4l2-ctl

瑞芯微的SDK在Buildroot固件中,已经编译好了v4l2-utils软件包里面的工具(Android通常默认支持)。

ubuntu系统安装方法:

peng@ubuntu:~$ sudo apt install v4l-utils

2. media-ctl

media-ctl是v4l2-utils包中的一个工具,主要用来查看、配置Media Framework的各Entity的信息,如格式、裁剪、链接使能等。

V4l2-ctl 工具则是针对/dev/video0,/dev/video1 等 video设备,它在 video 设备上进行 set_fmt,reqbuf(申请buf),qbuf(送buf回队列),dqbuf(从队列取出buf),stream_on,stream_off 等一系列操作。

 n为4的倍数(0,1,2,3…)
 /dev/videon+0:视频输出 SP主通道
 /dev/videon+1:视频输出 MP自身通道
 /dev/videon+2:3A统计
 /dev/videon+3:3A参数设置

1)找到video设备

拓扑结构中有多个的Entity,一些是sub device,一些是video device。前者对应的设备节点是/dev/v4l-subdev,后者对应的是/dev/video。多个的video device中,最常关注的是哪个设备可以输出图像。

$ media-ctl -d /dev/media0 -e "rkisp_selfpath"
/dev/video1
$ media-ctl -d /dev/media0 -e "rkisp_mainpath"
/dev/video0

上面两个命令分别显示出/dev/media0这个链路中,RKISP的SP及MP节点的设备路径。RKISP有两个视频输出设备,它们都能输出图像。

2)显示拓扑结构

使用以下命令可以显示拓扑结构:

$ media-ctl -p -d /dev/media0

主要关注的是有没有找到Sensor的Entity。如果没有找到Sensor的Entity,说明Sensor注册有问题,请按FAQ文档排查。

例如,开发板上接上ov13850摄像头后可以看到如下的输出:

rk3568_r:/ # media-ctl -d /dev/media0 -p               
media-ctl -d /dev/media0 -p                            
Opening media device /dev/media0                       
Enumerating entities                                   
Found 13 entities                                      
Enumerating pads and links                             
Media controller API version 0.0.255                   
                                                       
Media device information                               
------------------------                               
driver          rkisp-vir0                             
model           rkisp0                                 
serial                                                 
bus info                                               
hw revision     0x0                                    
driver version  0.0.255                                
                                                       
Device topology                                        
- entity 1: rkisp-isp-subdev (4 pads, 7 links)         
            type V4L2 subdev subtype Unknown           
            device node name /dev/v4l-subdev0          
        pad0: Sink                                     
                [fmt:SBGGR10/2112x1568                 
                 crop.bounds:(0,0)/2112x1568           
                 crop:(0,0)/2112x1568]                 
                <- "rkisp-csi-subdev":1 [ENABLED]      
                <- "rkisp_rawrd0_m":0 []               
                <- "rkisp_rawrd2_s":0 []               
        pad1: Sink                                     
                <- "rkisp-input-params":0 [ENABLED]    
        pad2: Source                                   
                [fmt:YUYV2X8/2112x1568                 
                 crop.bounds:(0,0)/2112x1568           
                 crop:(0,0)/2112x1568]                 
                -> "rkisp_mainpath":0 [ENABLED]        
                -> "rkisp_selfpath":0 [ENABLED]        
        pad3: Source                                   
                -> "rkisp-statistics":0 [ENABLED]      
                                                       
- entity 6: rkisp-csi-subdev (6 pads, 5 links)         
            type V4L2 subdev subtype Unknown           
            device node name /dev/v4l-subdev1          
        pad0: Sink                                     
                [fmt:SBGGR10/4224x3136]                
                <- "rockchip-csi2-dphy0":1 [ENABLED]   
        pad1: Source                                   
                [fmt:SBGGR10/4224x3136]                
                -> "rkisp-isp-subdev":0 [ENABLED]      
        pad2: Source                                   
                [fmt:SBGGR10/4224x3136]                
                -> "rkisp_rawwr0":0 [ENABLED]          
        pad3: Source                                   
                [fmt:SBGGR10/4224x3136]                
        pad4: Source                                   
                [fmt:SBGGR10/4224x3136]                
                -> "rkisp_rawwr2":0 [ENABLED]          
        pad5: Source                                   
                [fmt:SBGGR10/4224x3136]                
                -> "rkisp_rawwr3":0 [ENABLED]          
                                                       
- entity 13: rkisp_mainpath (1 pad, 1 link)            
             type Node subtype V4L                     
             device node name /dev/video0              
        pad0: Sink                                     
                <- "rkisp-isp-subdev":2 [ENABLED]      
                                                       
- entity 19: rkisp_selfpath (1 pad, 1 link)            
             type Node subtype V4L                     
             device node name /dev/video1              
        pad0: Sink                                     
                <- "rkisp-isp-subdev":2 [ENABLED]      
                                                       
- entity 25: rkisp_rawwr0 (1 pad, 1 link)              
             type Node subtype V4L                     
             device node name /dev/video2              
        pad0: Sink                                     
                <- "rkisp-csi-subdev":2 [ENABLED]      
                                                       
- entity 31: rkisp_rawwr2 (1 pad, 1 link)              
             type Node subtype V4L                     
             device node name /dev/video3              
        pad0: Sink                                     
                <- "rkisp-csi-subdev":4 [ENABLED]      
                                                       
- entity 37: rkisp_rawwr3 (1 pad, 1 link)              
             type Node subtype V4L                     
             device node name /dev/video4              
        pad0: Sink                                     
                <- "rkisp-csi-subdev":5 [ENABLED]      
                                                       
- entity 43: rkisp_rawrd0_m (1 pad, 1 link)            
             type Node subtype V4L                     
             device node name /dev/video5              
        pad0: Source                                   
                -> "rkisp-isp-subdev":0 []             
                                                       
- entity 49: rkisp_rawrd2_s (1 pad, 1 link)            
             type Node subtype V4L                     
             device node name /dev/video6              
        pad0: Source                                   
                -> "rkisp-isp-subdev":0 []             
                                                       
- entity 55: rkisp-statistics (1 pad, 1 link)          
             type Node subtype V4L                     
             device node name /dev/video7              
        pad0: Sink                                     
                <- "rkisp-isp-subdev":3 [ENABLED]      
                                                       
- entity 61: rkisp-input-params (1 pad, 1 link)        
             type Node subtype V4L                     
             device node name /dev/video8              
        pad0: Source                                   
                -> "rkisp-isp-subdev":1 [ENABLED]      
                                                       
- entity 67: rockchip-csi2-dphy0 (2 pads, 2 links)     
             type V4L2 subdev subtype Unknown          
             device node name /dev/v4l-subdev2         
        pad0: Sink                                     
                [fmt:SBGGR10/4224x3136]                
                <- "m00_b_ov13850 4-0010":0 [ENABLED]  
        pad1: Source                                   
                [fmt:SBGGR10/4224x3136]                
                -> "rkisp-csi-subdev":0 [ENABLED]      
                                                       
- entity 70: m00_b_ov13850 4-0010 (1 pad, 1 link)      
             type V4L2 subdev subtype Sensor           
             device node name /dev/v4l-subdev3         
        pad0: Source                                   
                [fmt:SBGGR10/4224x3136]                
                -> "rockchip-csi2-dphy0":0 [ENABLED]   

从entity70信息中可以看到:

  • 该Entity完整的名称是:m00_b_ov13850 4-0010
  • 它是一个V4L2 subdev(Sub-Device) Sensor
  • 它对应的节点是/dev/v4l-subdev3,应用程序(如v4l2-ctl)可以打开它,并进行配置
  • 它仅有一个输出(Source)节点,记为pad0
  • 它的输出格式是[fmt:SBGGR10/4224x3136],其中SBGGR10是一种mbus-code的简称
  • 它的Source pad0 链接到"rockchip-csi2-dphy0"的pad0,并且当前的状态是 ENABLED。

拓扑结构图如下:【后面文章会详细讲解该结构图,请收藏本系列文章】

3)修改Entity的format、size

举例一,ov3850摄像头支持多个分辨率的输出,默认为1920x1080。现将输出分辨率改为640x480:

media-ctl -d/dev/media0\
--set-v4l2' "m00_b_ov13850 4-0010":0[fmt:SBGGR10/640x480]'

修改ov3850输出后,rkisp-isp-subdev的大小及video device crop也相应要修改。因为后级的大小不能大于前级的大小。

~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[fmt:SBGGR10/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[crop: (0, 0)/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":2[crop: (0, 0)/640x480]'
~/>$ v4l2-ctl -d/dev/video0\
--set-selection=target=crop, top=0, left=0, width=640, height=480

3. v4l2-ctl

v4l2-ctl的帮助信息查看:

[root@RK356X:~]# v4l2-ctl -h
General/Common options:
--all           display all information available
-C, --get-ctrl [,...]
get the value of the controls [VIDIOC_G_EXT_CTRLS]
-c, --set-ctrl =[,=...]
set the value of the controls [VIDIOC_S_EXT_CTRLS]
-D, --info        show driver info [VIDIOC_QUERYCAP]
-d, --device  use device  instead of/dev/video0
if  starts with a digit, then /dev/video is used
-e, --out-device  use device  for output streams instead of the default device as set with --device
if  starts with a digit, then /dev/video is used
-h, --help display this help message
…………

也可以进入以下网站:

https://www.mankier.com/1/v4l2-ctl

1)列出所有设备

命令:

v4l2-ctl --list-devices

执行结果:

rk3568_r:/ # v4l2-ctl --list-devices
v4l2-ctl --list-devices
rkisp-statistics (platform: rkisp):
        /dev/video7
        /dev/video8

rkisp_mainpath (platform:rkisp-vir0):
        /dev/video0
        /dev/video1
        /dev/video2
        /dev/video3
        /dev/video4
        /dev/video5
        /dev/video6

2)指定设备的预览支持格式

v4l2-ctl --list-formats-ext --device /dev/video0
v4l2-ctl --list-formats-ext --device /dev/video1
rk3568_r:/ # v4l2-ctl --list-formats-ext --device /dev/video0   
v4l2-ctl --list-formats-ext --device /dev/video0                
ioctl: VIDIOC_ENUM_FMT                                          
        Index       : 0                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'UYVY'                                    
        Name        : UYVY 4:2:2                                
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 1                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: '422P'                                    
        Name        : Planar YUV 4:2:2                          
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 2                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NV16'                                    
        Name        : Y/CbCr 4:2:2                              
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 3                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NV61'                                    
        Name        : Y/CrCb 4:2:2                              
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 4                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'YM16'                                    
        Name        : Planar YUV 4:2:2 (N-C)                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 5                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NV21'                                    
        Name        : Y/CrCb 4:2:0                              
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 6                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NV12'                                    
        Name        : Y/CbCr 4:2:0                              
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 7                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NM21'                                    
        Name        : Y/CrCb 4:2:0 (N-C)                        
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 8                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NM12'                                    
        Name        : Y/CbCr 4:2:0 (N-C)                        
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 9                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'YU12'                                    
        Name        : Planar YUV 4:2:0                          
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 10                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'YM24'                                    
        Name        : Planar YUV 4:4:4 (N-C)                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 11                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'RGGB'                                    
        Name        : 8-bit Bayer RGRG/GBGB                     
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 12                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'GRBG'                                    
        Name        : 8-bit Bayer GRGR/BGBG                     
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 13                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'GBRG'                                    
        Name        : 8-bit Bayer GBGB/RGRG                     
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 14                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'BA81'                                    
        Name        : 8-bit Bayer BGBG/GRGR                     
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 15                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'RG10'                                    
        Name        : 10-bit Bayer RGRG/GBGB                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 16                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'BA10'                                    
        Name        : 10-bit Bayer GRGR/BGBG                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 17                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'GB10'                                    
        Name        : 10-bit Bayer GBGB/RGRG                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 18                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'BG10'                                    
        Name        : 10-bit Bayer BGBG/GRGR                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 19                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'RG12'                                    
        Name        : 12-bit Bayer RGRG/GBGB                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 20                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'BA12'                                    
        Name        : 12-bit Bayer GRGR/BGBG                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 21                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'GB12'                                    
        Name        : 12-bit Bayer GBGB/RGRG                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8  
                                                                
        Index       : 22                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'BG12'                                    
        Name        : 12-bit Bayer BGBG/GRGR                    
                Size: Stepwise 32x16 - 2112x1568 with step 8/8                                                 
rk3568_r:/ #                      
rk3568_r:/ # v4l2-ctl --list-formats-ext --device /dev/video1   
v4l2-ctl --list-formats-ext --device /dev/video1                
ioctl: VIDIOC_ENUM_FMT                                          
        Index       : 0                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'UYVY'                                    
        Name        : UYVY 4:2:2                                
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 1                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: '422P'                                    
        Name        : Planar YUV 4:2:2                          
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 2                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NV16'                                    
        Name        : Y/CbCr 4:2:2                              
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 3                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NV61'                                    
        Name        : Y/CrCb 4:2:2                              
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 4                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'YM16'                                    
        Name        : Planar YUV 4:2:2 (N-C)                    
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 5                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NV21'                                    
        Name        : Y/CrCb 4:2:0                              
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 6                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NV12'                                    
        Name        : Y/CbCr 4:2:0                              
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 7                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NM21'                                    
        Name        : Y/CrCb 4:2:0 (N-C)                        
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 8                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'NM12'                                    
        Name        : Y/CbCr 4:2:0 (N-C)                        
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 9                                         
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'YU12'                                    
        Name        : Planar YUV 4:2:0                          
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 10                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'YM24'                                    
        Name        : Planar YUV 4:4:4 (N-C)                    
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 11                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'GREY'                                    
        Name        : 8-bit Greyscale                           
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 12                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'XR24'                                    
        Name        : 32-bit BGRX 8-8-8-8                       
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 13                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'RGBP'                                    
        Name        : 16-bit RGB 5-6-5                          
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  
                                                                
        Index       : 14                                        
        Type        : Video Capture Multiplanar                 
        Pixel Format: 'FBCG' (compressed)                       
        Name        : Rockchip fbc gain                         
                Size: Stepwise 32x16 - 1920x1080 with step 8/8  

3)获取指定设备的所有信息

v4l2-ctl --all --device /dev/video0

设备信息如下:

rk3568_r:/ # v4l2-ctl --all --device /dev/video0
v4l2-ctl --all --device /dev/video0
Driver Info:
        Driver name      : rkisp_v5
        Card type        : rkisp_mainpath
        Bus info         : platform:rkisp-vir0
        Driver version   : 1.8.0
        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      : rkisp-vir0
        Model            : rkisp0
        Serial           :
        Bus info         :
        Media version    : 4.19.255
        Hardware revision: 0x00000000 (0)
        Driver version   : 4.19.255
Interface Info:
        ID               : 0x0300000e
        Type             : V4L Video
Entity Info:
        ID               : 0x0000000d (13)
        Name             : rkisp_mainpath
        Function         : V4L2 I/O
        Pad 0x01000010   : Sink
          Link 0x02000011: from remote pad 0x1000004 of entity 'rkisp-isp-subdev': Data, Enabled
Priority: 2
Format Video Capture Multiplanar:
        Width/Height      : 2112/1568
        Pixel Format      : 'NV12'
        Field             : None
        Number of planes  : 1
        Flags             :
        Colorspace        : Default
        Transfer Function : Default
        YCbCr Encoding    : Default
        Quantization      : Full Range
        Plane 0           :
           Bytes per Line : 2112
           Size Image     : 4967424
Crop: Left 0, Top 0, Width 2112, Height 1568
Selection: crop, Left 0, Top 0, Width 2112, Height 1568, Flags:
Selection: crop_bounds, Left 0, Top 0, Width 2112, Height 1568, Flags:
Selection: crop, Left 0, Top 0, Width 2112, Height 1568, Flags:
Selection: crop_bounds, Left 0, Top 0, Width 2112, Height 1568, Flags:

User Controls

                       exposure 0x00980911 (int)    : min=4 max=3324 step=1 default=1536 value=1536

Image Source Controls

              vertical_blanking 0x009e0901 (int)    : min=192 max=29631 step=1 default=192 value=192
            horizontal_blanking 0x009e0902 (int)    : min=576 max=576 step=1 default=576 value=576 flags=read-only
                  analogue_gain 0x009e0903 (int)    : min=16 max=248 step=1 default=16 value=16

Image Processing Controls

                 link_frequency 0x009f0901 (intmenu): min=0 max=0 default=0 value=0 flags=read-only
                     pixel_rate 0x009f0902 (int64)  : min=0 max=0 step=0 default=0 value=120000000 flags=read-only
                   test_pattern 0x009f0903 (menu)   : min=0 max=4 default=0 value=0

4) 显示摄像头参数

v4l2-ctl --list-ctrls --device /dev/video0
或者
v4l2-ctl -d /dev/video0 -l 

显示摄像头参数

rk3568_r:/ # v4l2-ctl -d /dev/video0 -l     
v4l2-ctl -d /dev/video0 -l  
User Controls                                                                                                                                                               
                       exposure 0x00980911 (int)    : min=4 max=3324 step=1 default=1536 value=1536   
Image Source Controls                                                                                                                                                                                                                              
              vertical_blanking 0x009e0901 (int)    : min=192 max=29631 step=1 default=192 value=192   
            horizontal_blanking 0x009e0902 (int)    : min=576 max=576 step=1 default=576 value=576 flags=read-only 
                  analogue_gain 0x009e0903 (int)    : min=16 max=248 step=1 default=16 value=16   
Image Processing Controls                                                                                                       
                 link_frequency 0x009f0901 (intmenu): min=0 max=0 default=0 value=0 flags=read-only 
                     pixel_rate 0x009f0902 (int64)  : min=0 max=120000000 step=1 default=120000000 value=120000000 flags=read-only      
                   test_pattern 0x009f0903 (menu)   : min=0 max=4 default=0 value=0   

5)增加曝光exposure

exposure值区间为:  4-3324 命令实例:

v4l2-ctl -d /dev/video0 --set-ctrl exposure=3324

6)增加图片亮度analogue_gain

analogue_gain用于设置显示的图像的亮度

analogue_gain值区间:

16-248

命令实例:

v4l2-ctl -d /dev/video0 --set-ctrl analogue_gain=240

analogue_gain=16现象

analogue_gain=244现象【效果非常明显】

7)使用v4l2-ctl抓帧

v4l2-ctl -d /dev/video0 --set-fmt-video=width=800,height=600,pixelformat=NV12 --stream-mmap=3 --stream-to=/sdcard/out.yuv --stream-skip=9 --stream-count=1
m-mmap=3 --stream-to=/sdcard/out.yuv --stream-skip=9 --stream-count=1         <
<<<<<<<<< 7.51 fps
<

【看到<<<<<<<<< 7.51 fps 说明成功】

参数说明

-d: 摄像头对应设备文件
--set-fmt-video:指定了宽高及pxielformat(用FourCC表示)。NV12即用FourCC表示的pixelformat
--stream-mmap:指定buffer的类型为mmap,即由kernel分配的物理连续的或经过iommu映射的buffer
--stream-to:指定帧数据保存的文件路径
--stream-skip:指定丢弃(不保存到文件)前3帧
--stream-count:指定抓取的帧数,不包括--stream-skip丢弃的数量

其他参数
--set-selection,指定对输入图像进行裁剪。特别是当RKISP1的前级大小发生变化时要保证selection不大于前级输出大小。RKCIF的裁剪则是通过--set-crop参数设置的
--stream-poll,该选项指示v4l2-ctl采用异步IO,即在dqbuf前先用select等等帧数据完成,从而保证dqbuf不阻塞。否则dqbuf将会阻塞直到有数据帧到来

如果支持264的可以编码为h264查看

v4l2-ctl --device /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=H264 --stream-mmap=3 --stream-to=/sdcard/output --stream-count=100

v4l2-ctl --device /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=MJPG --stream-mmap --stream-to=/sdcard/output.mjpg --stream-count=300

8)测试显示信息test_pattern

参数test_pattern,可以用于测试显示图像

  • 0:摄像头
  • 1-3 测试图片 命令实例:
v4l2-ctl -d /dev/video0 --set-ctrl test_pattern=0 

test_pattern = 1test_pattern = 2test_pattern = 3

4. 显示图片

上一节,抓取的图片、视频要可以拷贝到ubuntu中借助借助工具ffplay查看。

1)ffplay

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。

它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

ffplay是FFmpeg提供的一个极为简单的音视频媒体播放器(由ffmpeg库和SDL库开发),可以用于音视频播放、可视化分析 ,提供音视频显示和播放相关的图像信息、音频的波形等信息,也可以用作FFmpeg API的测试工具使用。

由于是基于FFmpeg开发所以ffmpeg支持的视音频格式它基本上都支持,不过ffplay不是图形化界面需要通过CMD命令窗口来操作。

2)官网网站

http://www.ffmpeg.org/ffplay.html

3)ffplay命令选项:

基本格式: ffplay [选项] [‘输入文件’]

主要选项:

-x width      强制显示宽带
-y height      强制显示高度
-video_size size    设置帧尺寸 设置帧尺寸大小。
 适用于类似原始YUV等没有包含帧大小(WxH)的视频。
 例如:ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv
-pixel_format format   设置像素格式。
-volume vol     设置起始音量。音量范围[0 ~100]
-window_title title   设置窗口标题(默认为输入文件名)
-loop number     设置播放循环次数
-showmode mode     设置显示模式,可用的模式值:0 显示视频,1 显示音频波形,2 显示音频频谱。缺省为0,如果视频不存在则自动选择2
-vf filtergraph    设置视频滤镜
-af filtergraph    设置音频滤镜
-f fmt       强制使用设置的格式进行解析。比如-f s16le 

-fs      以全屏模式启动
-an      禁用音频(不播放声音)
-vn      禁用视频(不播放视频)
-sn      禁用字幕(不显示字幕)
-nodisp     关闭图形化显示窗口,视频将不显示
-noborder     无边框窗口


-t duration   设置播放视频/音频长度,时间单位如 -ss选项
-ss pos    跳转到指定的位置,注意时间单位:
  比如:'55' 55 seconds, 
   '12:03:45' ,12 hours, 03 minutes and 45 seconds, 
   '23.189' 23.189 second


-bytes        按字节进行跳转(0=off 1=on -1=auto)。
-seek_interval interval   自定义左/右键定位拖动间隔(以秒为单位),默认值为10秒(代码没有看到实现)

4)显示图片

将文件**/sdcard/out.yuv从板子通过adb pull**命令拷贝出来, 运行于windows下:

adb pull /sdcard/out.yuv

再拷贝到ubuntu中,执行以下命令显示图片【用其他可以打开yuv格式图片的工具也可以】

ffplay out.yuv -f rawvideo -pixel_format nv12 -video_size 800x600

文中各种mipi技术文档,后台回复关键字:mipi

掌握了这些命令,我们就可以调试摄像头了。

后面还会继续更新几篇Camera文章,

建议大家订阅本专题!

也可以后台留言,加一口君好友yikoupeng,

拉你进高质量技术交流群。

end


一口Linux 


关注,回复【1024】海量Linux资料赠送

精彩文章合集


文章推荐

【专辑】ARM
【专辑】粉丝问答
专辑linux入门
专辑计算机网络
专辑Linux驱动
【干货】嵌入式驱动工程师学习路线
【干货】Linux嵌入式所有知识点-思维导图

一口Linux 写点代码,写点人生!
评论
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 86浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 68浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 66浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 109浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 75浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 73浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 56浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 40浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 63浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 85浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 113浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 88浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 78浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦