当前位置:   article > 正文

瑞芯微 | 摄像头ov13850移植笔记_安卓 自带摄像头 soc

安卓 自带摄像头 soc

本文来源

0、环境

一、ov13850简介

  1. 产品参数

品牌:Omnivision
型号:CMK-OV13850
接口:MIPI
像素:1320W

在这里插入图片描述
OV13850彩色图像传感器是一款低电压、高性能1/3.06英寸1320万像素CMOS图像传感器,使用OmniBSI+?技术提供了单-1320万像素(4224×3136)摄像头的功能。通过串行摄像头控制总线(SCCB)接口的控制,它提供了全帧、下采样、开窗的10位MIPI图像。
OV13850拥有一个能够在10位1320万像素分辨率下以每秒24帧(fps)的速度运行的图像阵列,用户可以完全控制图像质量、格式和输出数据传输。所有需要的图像处理功能,包括曝光控制、白平衡、缺陷像素消除等,都可以通过SCCB接口进行编程。
在这里插入图片描述
此外,OmniBSI图像传感器使用专有的传感器技术,通过减少或消除固定图案噪声、污迹等常见的图像污染光源来提高图像质量,从而产生干净、完全稳定的彩色图像。

为了提供定制信息,OV13850包括一个单编程(OPT)存储器。OV13850拥有最多4车道的MIPI接口。
OV13850适用于低功耗相机模块。
以下是测试用的摄像头&扩展板:
在这里插入图片描述
2. 特性
●镜头尺寸:1/3.06英寸
●像素大小:1.12毫米×1.12毫米
●31.2°CRA为6mm z高度
●可编程控制帧速率,镜像和翻转,裁剪和窗口
●1320万像素AT30fps
●双线串行总线控制(SCCB)
●闪光灯输出控制闪光
●支持输出格式:10位RAW RGB
●支持图像大小:13.2MP(4224×3136)、10MP(4224×2376)、4K2K(3840×2160)、EIS 1080P(2112×1188)、EIS 720P(1408×792)、more3
●支持2×2 Binning
●可达4车道MIPI串行输出接口
●标准系列SCCB接口
●8k bit的嵌入式一次性可编程(OTP)存储器(见侧注)
●两个片上锁相环(PLLs)
●可编程控制:增益、曝光、帧率、图像大水、水平反射镜、垂直翻转裁剪和平移
●内置温度传感器
●图像质量控制:缺陷校正,自动黑电平校准,镜头阴影校正,和高度计行HDR。
●保证传感器结温:-300C到+850C
●电源核心:1.14V-1.26V;模拟:2.6-3.0V输入/输出:1.7-3.0V
●封装:PLCC40

  1. ov13850引脚图
    在这里插入图片描述
  2. ov13850功能模块
    在这里插入图片描述
    定时脉冲发生器输出时钟来访问成像阵列的行,预先填充电荷并且按顺序对数组的行进行采样。

在预先填充电荷和采样的时间间隔内,每个像素点的电荷曝光时减少入射光。

这是在滚动快门的体系结构的曝光时间。

曝光时间通过调整预先填充电荷和采样之间的时间间隔控制。

在每一行的像素数据采样后,通过模拟电路(AMP)进一步处理:纠正偏移量和将数据乘以相应的增益。

模拟处理后通过10位ADC的输出数组中的每个像素的数据。

ISP(image sensor processor)通过图像输出接口单元,经过mipi接口(MCP/MDP)将图像数据发送出去。

  1. 像素数组
    OV13850传感器的图像数组4256列3152行(13414912像素)
    颜色过滤器是安排在Bayer模式
    在这里插入图片描述
    Binning mode 2x2 binning
    Binning mode 通常用于低分辨率
    在这里插入图片描述
  2. mirror 和 flip
    OV13850提供图像mirror(左右翻转) 和 flip(上下翻转)模式
    在这里插入图片描述

二、驱动移植

瑞芯微支持的摄像头,有个support list,
此次从该list中选择了ov13850

1. 驱动源文件及对应脚本

默认sdk里面已经将支持的所有摄像头驱动都添加到了内核,所以不需要移植该驱动了,
但是还是要确认下移植驱动对应的一些信息

  • 源程序
rk_android11.0_sdk_220718\kernel\drivers\media\i2c\ov13850.c	
rk_android11.0_sdk_220718\kernel\include\config\video\ov13850.h	
  • 1
  • 2

kernel/drivers/media/i2c/Makefile

115 obj-$(CONFIG_VIDEO_OV13850) += ov13850.o
  • 1
  • kernel/drivers/media/i2c/Kconfig
1282 config VIDEO_OV13850                                                       
1283     tristate "OmniVision OV13850 sensor support"
1284     depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
1285     depends on MEDIA_CAMERA_SUPPORT
1286     select V4L2_FWNODE
1287     ---help---
1288       This is a Video4Linux2 sensor driver for the OmniVision
1289       OV13850 camera.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 驱动对应的宏开关
    kernel/arch/arm64/configs/rockchip_defconfig
581 CONFIG_VIDEO_OV13850=y
  • 1

2. 设备树

1)典型ov系列摄像头链接示意图

在这里插入图片描述
ov系列摄像头与SOC连接的主要的引脚有:
i2c、rst、pwdn、mclk、MIPI Clk、MIPI DATA
这几根线是驱动工程师必须捋清楚的

2)电路图

本次我们直接将摄像头插在公版的视频接口,用的是通道0,使用了4个lane【不知道具体硬件信息就问硬件工程师】

在这里插入图片描述
在这里插入图片描述
由电路图可知,几个关键引脚关系:

  • reset信号:GPIO3 B6
  • power down信号:GPIO4 B4
  • I2C通道:4
  • clock:cif

3)设备树节点

参考sdk中其他平台的ov13850节点来填写

kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
   ov13850: ov13850@10 {
       status = "okay";
       compatible = "ovti,ov13850";
       reg = <0x10>;
       clocks = <&cru CLK_CIF_OUT>;
       clock-names = "xvclk";
       power-domains = <&power RK3568_PD_VI>;
       pinctrl-names = "default";
       pinctrl-0 = <&cif_clk>;
       reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_HIGH>;
       pwdn-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
       rockchip,camera-module-index = <0>;
       rockchip,camera-module-facing = "back";             
       rockchip,camera-module-name = "ZC-OV13850R2A-V1";
       rockchip,camera-module-lens-name = "Largan-50064B31";
       port {
           ov13850_out: endpoint {
               remote-endpoint = <&mipi_in_ucam0>;
               data-lanes = <1 2 3 4>;
           };
       };
   };

114 &csi2_dphy0 {
115     status = "okay";
116 
117     ports {
118         #address-cells = <1>;
119         #size-cells = <0>;
120         port@0 {
121             reg = <0>;
122             #address-cells = <1>;                                                                                       
123             #size-cells = <0>;
124             
125             mipi_in_ucam0: endpoint@1 {
126                 reg = <1>;
127                 remote-endpoint = <&ov13850_out>;
128                 data-lanes = <1 2 3 4>;
129             };
……
152 }
  • 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

设备树的信息最终转换成i2c_client,并传递给ov13850驱动ov13850_probe()
compatible = “ovti,ov13850”;与驱动的of_match_table 保持一致

@rk_android11.0_sdk\kernel\drivers\media\i2c\ov13850.c
#if IS_ENABLED(CONFIG_OF)
static const struct of_device_id ov13850_of_match[] = {
	{ .compatible = "ovti,ov13850" },
	{},
};
MODULE_DEVICE_TABLE(of, ov13850_of_match);
#endif

static const struct i2c_device_id ov13850_match_id[] = {
	{ "ovti,ov13850", 0 },
	{ },
};

static struct i2c_driver ov13850_i2c_driver = {
	.driver = {
		.name = OV13850_NAME,
		.pm = &ov13850_pm_ops,
		.of_match_table = of_match_ptr(ov13850_of_match),
	},
	.probe		= &ov13850_probe,
	.remove		= &ov13850_remove,
	.id_table	= ov13850_match_id,
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

关于摄像头驱动,
彭老师后面会继续更一篇文章讲解。

3. 安卓配置文件

在以下两个文件增加对应摄像头信息,

hardware/rockchip/camera/etc/camera/camera3_profiles_rk356x.xml
hardware/rockchip/camera/etc/camera/camera3_profiles.xml
  • 1
  • 2

一口君直接参考的其他文件,
然后找一个相近型号的摄像头修改的

三、查看摄像头相关信息

1. 开机log

移植成功后,确认下对应的驱动log

10-26 17:58:54.659     0     0 I ov13850 4-0010: driver version: 00.01.05
10-26 17:58:54.659     0     0 W ov13850 4-0010: Failed to get power-gpios, maybe no use
10-26 17:58:54.659     0     0 W ov13850 4-0010: 4-0010 supply avdd not found, using dummy regulator
10-26 17:58:54.659     0     0 I ov13850 4-0010: Linked as a consumer to regulator.0
10-26 17:58:54.659     0     0 W ov13850 4-0010: 4-0010 supply dovdd not found, using dummy regulator
10-26 17:58:54.659     0     0 W ov13850 4-0010: 4-0010 supply dvdd not found, using dummy regulator
10-26 17:58:54.660     0     0 E ov13850 4-0010: could not get default pinstate
10-26 17:58:54.660     0     0 E ov13850 4-0010: could not get sleep pinstate
10-26 17:58:54.665     0     0 I ov13850 4-0010: Detected OV00d850 sensor, REVISION 0xb2
10-26 17:58:54.665     0     0 I rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_ov13850 4-0010:bus type 4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2. 查看ov13850设备

驱动加载成功后,会有以下信息

查看摄像头设备节点:

rk3568_r:/ # ls /dev/video* -l
ls /dev/video* -l
crw-rw---- 1 media camera 81,   0 2022-10-31 06:56 /dev/video0
crw-rw---- 1 media camera 81,   1 2022-10-31 06:56 /dev/video1
crw-rw---- 1 media camera 81,   2 2022-10-31 06:56 /dev/video2
crw-rw---- 1 media camera 81,   3 2022-10-31 06:56 /dev/video3
crw-rw---- 1 media camera 81,   4 2022-10-31 06:56 /dev/video4
crw-rw---- 1 media camera 81,   5 2022-10-31 06:56 /dev/video5
crw-rw---- 1 media camera 81,   6 2022-10-31 06:56 /dev/video6
crw-rw---- 1 media camera 81,   7 2022-10-31 06:56 /dev/video7
crw-rw---- 1 media camera 81,   8 2022-10-31 06:56 /dev/video8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
3. 查看sys文件系统中文件信息
内核会为摄像头在目录/sys/class/video4linux下分配设备信息描述文件
```bash
rk3568_r:/ # grep ov13850 /sys/class/video4linux/v*/name
grep ov13850 /sys/class/video4linux/v*/name
/sys/class/video4linux/v4l-subdev3/name:m00_b_ov13850 4-0010
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
rk3568_r:/ # grep "" /sys/class/video4linux/v*/name | grep mainpath
grep "" /sys/class/video4linux/v*/name | grep mainpath
/sys/class/video4linux/video0/name:rkisp_mainpath
  • 1
  • 2
  • 3

我的sensor

grep 214 /sys/class/video4linux/v*/name
/sys/class/video4linux/v4l-subdev3/name:m00_b_imx214 2-0010

grep "" /sys/class/video4linux/v*/name | grep mainpath
/sys/class/video4linux/video14/name:rkisp_mainpath
/sys/class/video4linux/video5/name:rkisp_mainpath
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

## 4. 查看拓扑 media-ctl -d /dev/media0 -p

```c
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/4224x3136                    
                 crop.bounds:(0,0)/4096x3072              
                 crop:(0,0)/4096x3072]                    
                <- "rkisp-csi-subdev":1 []                
                <- "rkisp_rawrd0_m":0 []                  
                <- "rkisp_rawrd2_s":0 []                  
        pad1: Sink                                        
                <- "rkisp-input-params":0 []              
        pad2: Source                                      
                [fmt:YUYV2X8/4096x3072                    
                 crop.bounds:(0,0)/4096x3072              
                 crop:(0,0)/4096x3072]                    
                -> "rkisp_mainpath":0 []                  
                -> "rkisp_selfpath":0 []                  
        pad3: Source                                      
                -> "rkisp-statistics":0 []                
                                                          
- entity 6: rkisp-csi-subdev (6 pads, 5 links)            
            type V4L2 subdev subtype Unknown              
            device node name /dev/v4l-subdev1             
        pad0: Sink                                        
                <- "rockchip-csi2-dphy0":1 []             
        pad1: Source                                      
                -> "rkisp-isp-subdev":0 []                
        pad2: Source                                      
                -> "rkisp_rawwr0":0 []                    
        pad3: Source                                      
        pad4: Source                                      
                -> "rkisp_rawwr2":0 []                    
        pad5: Source                                      
                -> "rkisp_rawwr3":0 []                    
                                                          
- entity 13: rkisp_mainpath (1 pad, 1 link)               
             type Node subtype V4L                        
             device node name /dev/video0                 
        pad0: Sink                                        
                <- "rkisp-isp-subdev":2 []                
                                                          
- entity 19: rkisp_selfpath (1 pad, 1 link)               
             type Node subtype V4L                        
             device node name /dev/video1                 
        pad0: Sink                                        
                <- "rkisp-isp-subdev":2 []                
                                                          
- entity 25: rkisp_rawwr0 (1 pad, 1 link)                 
             type Node subtype V4L                        
             device node name /dev/video2                 
        pad0: Sink                                        
                <- "rkisp-csi-subdev":2 []                
                                                          
- entity 31: rkisp_rawwr2 (1 pad, 1 link)                 
             type Node subtype V4L                        
             device node name /dev/video3                 
        pad0: Sink                                        
                <- "rkisp-csi-subdev":4 []                
                                                          
- entity 37: rkisp_rawwr3 (1 pad, 1 link)                 
             type Node subtype V4L                        
             device node name /dev/video4                 
        pad0: Sink                                        
                <- "rkisp-csi-subdev":5 []                
                                                          
- 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 []                
                                                          
- entity 61: rkisp-input-params (1 pad, 1 link)           
             type Node subtype V4L                        
             device node name /dev/video8                 
        pad0: Source                                      
                -> "rkisp-isp-subdev":1 []                
                                                          
- entity 67: rockchip-csi2-dphy0 (2 pads, 2 links)        
             type V4L2 subdev subtype Unknown             
             device node name /dev/v4l-subdev2            
        pad0: Sink                                        
                <- "m00_b_ov13850 4-0010":0 []            
        pad1: Source                                      
                -> "rkisp-csi-subdev":0 []                
                                                          
- 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 []                                                              
  • 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
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126

从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。

三、拍照测试

1. 抓帧

rk3568_r:/ # 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
<
  • 1
  • 2
  • 3
  • 4

【看到<<<<<<<<< 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将会阻塞直到有数据帧到来
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2. 显示图片:

将文件**/sdcard/out.yuv从板子通过adb pull**命令拷贝出来,

运行于windows下:
adb pull /sdcard/out.yuv
  • 1
  • 2

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

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

在这里插入图片描述

四、参数设置

1. 显示摄像头参数

显示摄像头参数

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   

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2. 增加曝光exposure

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

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

3. 增加图片亮度analogue_gain

analogue_gain用于设置显示的图像的亮度
analogue_gain值区间:16-248
命令实例:

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

analogue_gain=16现象
在这里插入图片描述
analogue_gain=244现象【效果非常明显】
在这里插入图片描述

  1. 测试显示信息test_pattern
    参数test_pattern,可以用于测试显示图像

0:摄像头
1-3 测试图片
命令实例:

v4l2-ctl -d /dev/video0 --set-ctrl test_pattern=0 
  • 1

test_pattern = 1
在这里插入图片描述
test_pattern = 2
在这里插入图片描述
test_pattern = 3

5. 修改Entity的format、size

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

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

修改GC2053输出后,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
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/263041
推荐阅读
相关标签
  

闽ICP备14008679号