V4l2-ctl

news2024/11/26 14:39:19

1 v4l-utils

v4l-utils是一种用于处理媒体设备的软件包,它主要包含两个常用工具1:

  1. media-ctl:用于配置拓扑结构中各节点的format、大小、链接;操作/dev/medio0节点;获取Camera支持数据格式等。
  2. v4l2-ctl:用于获取和设置v4l2设备的参数。

它托管在[ v4l-utils.git ]中,并打包在大多数发行版中。提供了一系列库和实用程序,可用于控制板

l-utils还包含其他一些实用程序和库,用于处理视频4 Linux(V4L)设备驱动程序和相关功能。

以下是v4l-utils中一些常用工具的简要说明:

  1. v4l2-ctl:用于控制和配置V4L2设备的功能和参数。它可以设置图像分辨率、帧率、缩放、旋转等参数,以及控制摄像头的基本设置。
  2. v4l2-overlay:用于在屏幕上叠加图像或文本,以提供对图像的注释或标记。它可以将自定义的图像或文本叠加在视频流上,并支持透明度和位置调整。
  3. v4l2-format:用于查询和设置设备图像格式的实用程序。它可以列出设备支持的所有图像格式,并选择要使用的特定格式。
  4. v4l2-capture:用于捕获视频帧的实用程序。它可以读取设备缓存中的视频帧,并将其保存为图像文件或进行其他处理。
  5. v4l2-zoom:用于缩放视频图像的实用程序。它可以将图像放大或缩小,同时支持平滑的缩放效果。
  6. v4l2-exposure:用于控制摄像头曝光时间的实用程序。它可以设置曝光时间、曝光补偿、手动/自动曝光模式等参数。
  7. v4l2-排查:用于排查V4L2设备问题的实用程序。它可以检查设备连接、功能和参数配置,并生成详细的错误报告。

这些工具可以单独使用,也可以与其他V4L2相关的库和应用程序一起使用,以实现更复杂的功能和操作。

这里只展开v4l2-ctl

2 v4l2-ctl

 v4l2-ctl --help 查询支持的所有命令

 v4l2-ctl --help

General/Common options:
  --all              display all information available
  -C, --get-ctrl=<ctrl>[,<ctrl>...]
                     get the value of the controls [VIDIOC_G_EXT_CTRLS]
  -c, --set-ctrl=<ctrl>=<val>[,<ctrl>=<val>...]
                     set the value of the controls [VIDIOC_S_EXT_CTRLS]
  -D, --info         show driver info [VIDIOC_QUERYCAP]
  -d, --device=<dev> use device <dev> instead of /dev/video0
                     if <dev> starts with a digit, then /dev/video<dev> is used
  -e, --out-device=<dev> use device <dev> for output streams instead of the
                     default device as set with --device
                     if <dev> starts with a digit, then /dev/video<dev> is used
  -h, --help         display this help message
  --help-all         all options
  --help-io          input/output options
  --help-misc        miscellaneous options
  --help-overlay     overlay format options
  --help-sdr         SDR format options
  --help-selection   crop/selection options
  --help-stds        standards and other video timings options
  --help-streaming   streaming options
  --help-subdev      sub-device options
  --help-tuner       tuner/modulator options
  --help-vbi         VBI format options
  --help-vidcap      video capture format options
  --help-vidout      vidout output format options
  --help-edid        edid handling options
  -k, --concise      be more concise if possible.
  -l, --list-ctrls   display all controls and their values [VIDIOC_QUERYCTRL]
  -L, --list-ctrls-menus
                     display all controls and their menus [VIDIOC_QUERYMENU]
  -r, --subset=<ctrl>[,<offset>,<size>]+
                     the subset of the N-dimensional array to get/set for control <ctrl>,
                     for every dimension an (<offset>, <size>) tuple is given.
  --list-devices     list all v4l devices
  --log-status       log the board status in the kernel log [VIDIOC_LOG_STATUS]
  --get-priority     query the current access priority [VIDIOC_G_PRIORITY]
  --set-priority=<prio>
                     set the new access priority [VIDIOC_S_PRIORITY]
                     <prio> is 1 (background), 2 (interactive) or 3 (record)
  --silent           only set the result code, do not print any messages
  --sleep=<secs>     sleep <secs>, call QUERYCAP and close the file handle
  --verbose          turn on verbose ioctl status reporting
 

 2.1 常用命令

2.1.1 v4l2-ctl --list-devices  

列出系统中所有的V4L2设备

下图2路usb摄像头

 2.1.2  v4l2-ctl -d /dev/veoxx --all

查询相机的详细信息   v4l2-ctl  -d  /dev/video11

rk3568_r:/ $ v4l2-ctl -d /dev/video11 --all
Driver Info:
        Driver name      : uvcvideo
        Card type        : USB2.0_ CAM2: USB2.0_ CAM2
        Bus info         : usb-fd800000.usb-1.1
        Driver version   : 4.19.219
        Capabilities     : 0x84a00001
                Video Capture
                Metadata Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
        Width/Height      : 640/480
        Pixel Format      : 'YUYV'
        Field             : None
        Bytes per Line    : 1280
        Size Image        : 614400
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Limited Range)
        Flags             :
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 640, Height 480
        Default     : Left 0, Top 0, Width 640, Height 480
        Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 640, Height 480, Flags:
Selection: crop_bounds, Left 0, Top 0, Width 640, Height 480, Flags:
Streaming Parameters Video Capture:
        Capabilities     : timeperframe
        Frames per second: 30.000 (30/1)
        Read buffers     : 0
                    //亮度
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=0
	    //对比度
                       contrast 0x00980901 (int)    : min=0 max=100 step=1 default=50 value=50
	  //饱和度
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=64 value=64
	//色度
                            hue 0x00980903 (int)    : min=-180 max=180 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=100 max=500 step=1 default=300 value=300
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
	//白平衡
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=10 default=4600 value=4600 flags=inactive
	//锐度
                      sharpness 0x0098091b (int)    : min=0 max=100 step=1 default=55 value=55
	//背光补偿
         backlight_compensation 0x0098091c (int)    : min=0 max=2 step=1 default=0 value=0
	//自动曝光
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=50 max=10000 step=1 default=166 value=166 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1
                   pan_absolute 0x009a0908 (int)    : min=-57600 max=57600 step=3600 default=0 value=0
                  tilt_absolute 0x009a0909 (int)    : min=-43200 max=43200 step=3600 default=0 value=0
	//变焦
                  zoom_absolute 0x009a090d (int)    : min=0 max=3 step=1 default=0 value=0

2.1.3 查询指定格式下各种分辨率支持

v4l2-ctl --list-framesizes=MJPG -d /dev/video11

 2.1.4 查看usb摄像头所有可用的分辨率 

v4l2-ctl --list-formats-ext --device /dev/video11

列出了 yuyv /mpeg 支持的多有分辨率 及帧率等

v4l2-ctl --list-formats-ext --device /dev/video11
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUYV 4:2:2
                Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 800x600
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1024x768
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1280x720
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1280x960
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1600x1304
                        Interval: Discrete 0.200s (5.000 fps)

        Index       : 1
        Type        : Video Capture
        Pixel Format: 'MJPG' (compressed)
        Name        : Motion-JPEG
                Size: Discrete 640x480
                        Interval: Discrete 0.017s (60.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 800x600
                        Interval: Discrete 0.017s (60.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1024x768
                        Interval: Discrete 0.017s (60.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1280x720
                        Interval: Discrete 0.017s (60.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1280x960
                        Interval: Discrete 0.017s (60.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1280x1024
                        Interval: Discrete 0.017s (60.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1600x1200
                        Interval: Discrete 0.017s (60.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 1600x1304
                        Interval: Discrete 0.017s (60.000 fps)
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)

 2.1.5 显示摄像头参数

 v4l2-ctl -d /dev/video11 --list-ctrls

2.2 设置相关命令

不是所有相机以下参数设置都支持,修改前先查询,在已知参数属性的基础上修改.

2.2.1 曝光模式

exposure_auto是v4l2-ctl命令中的一个参数,用于设置相机的曝光模式。

exposure_auto的取值可以是以下几种:

  1. Off:自动曝光时间调节处于禁用状态;
  2. Once:曝光时间会自动进行调整,以达到指定的目标值。当达到目标值时,自动功能将自动设为Off,并且新的参数值将应用到后续图像;
  3. Continuous:在采集图像时持续调整曝光时间。调整过程将持续,直到参数设为Once或Off为止。

v4l2-ctl -d /dev/video11 --set-ctrl exposure_auto=3

2.2.2 测试显示信息test_pattern

正常结果

 

2.2.3 增加图片亮度analogue_gain

 而此设备可能是这个参数

打开相机来试试

2.2.3 打开相机并显示

linux可用cheese 显示设备 

cheese -d /dev/video

或 GStreamer/ffmpeg。。

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

 

2.3 使用v4l2-ctl抓帧

v4l2-ctl -d /dev/video1 --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

貌似不支持一次抓怕多张

for i in {1..10}; do
    v4l2-ctl -d /dev/video0 --set-ctrl exposure_absolute=$(($i * 10)) --get-ctrl exposure_absolute --get-fmt-video width --get-fmt-video height --get-fmt-video pixfmt --get-fmt-video field --get-fmt-video timeperframe --get-fmt-video sizeimage --get-fmt-video planes --get-fmt-video depth --get-fmt-video fcc --get-fmt-video tvnorm --get-fmt-video width --get-fmt-video height --get-fmt-video pixfmt --get-fmt-video field --get-fmt-video timeperframe --get-fmt-video sizeimage --get-fmt-video planes --get-fmt-video depth --get-fmt-video fcc --get-fmt-video tvnorm --save /path/to/image-$i.jpg
done

 

 


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/753584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试为啥会越来越难?

最近感慨面试难的人越来越多了&#xff0c;一方面是市场环境&#xff0c;更重要的一方面是企业对Java的人才要求越来越高了。 基本上这样感慨的分为两类人&#xff0c;第一&#xff0c;虽然挂着3、5年经验&#xff0c;但肚子里货少&#xff0c;也没啥拿得出手的项目&#xff0c…

追妹神器,恋爱神器,哄老婆开心,智能机器人每天给你心爱的TA发送早晚安问候

柠檬恋爱助理配置文档 柠檬恋爱助理插件是利用微信测试公众号&#xff0c;实现每天给你的TA发送早晚安等模板消息的一款全自动化插件&#xff0c;恋爱神器、追妹神器。真正做到只需简单配置&#xff0c;就可以实现哄你的TA开心快乐每一天。 项目地址&#xff1a;点击查看 体…

【C语言】-- 一篇带你了解指针数组与数组指针

目录 一、什么是指针数组和数组指针 1. 指针数组&#xff1a;顾名思义&#xff0c;存放指针的数组。 补充&#xff08;1&#xff09;&#xff1a;指针数组还可以和字符串数组相结合使用 补充&#xff08;2&#xff09;&#xff1a;二维数组与指针数组的区别 2. 数组指针&am…

UriComponentsBuilder使用发现参数被编码了

前言 开发中&#xff0c;小编在项目中&#xff0c;使用RestTemplate做GET请求&#xff0c;为了优雅的封装参数&#xff0c;使用了UriComponentsBuilder来进行参数封装。直接123将代码写完&#xff0c;远程调用有数据&#xff0c;远程底层solr库&#xff0c;所以拿到数据了&…

Linux的基本使用和web程序部署

注意&#xff1a;本文章不适合C学习者&#xff08;知识点远远不够&#xff09;&#xff0c;只适合Java学习者&#xff0c;学习简单的Linux命令 1.Linux的背景知识 1.1Linux是什么 Linux是一个操作系统&#xff0c;和Windows是“并列”的关系。经过多年的发展&#xff0c;Lin…

控制台警告:Added non-passive event listener to a scroll-blocking <some> event

页面中的echarts图表缩放后在控制台就会出现以下提醒&#xff0c;虽然只是报黄提醒&#xff0c;但本人强迫症严重,见不得控制台有任何异常...... [Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as …

python+pytest接口自动化之测试函数、测试类/测试方法的封装

目录 前言 测试用例封装的一般规则 测试函数的封装 测试类/方法的封装 示例代码 总结 前言 在pythonpytest 接口自动化系列中&#xff0c;我们之前的文章基本都没有将代码进行封装&#xff0c;但实际编写自动化测试脚本中&#xff0c;我们都需要将测试代码进行封装&#…

并不简单的代理,Dubbo是如何做服务引用的

系列文章目录 【收藏向】从用法到源码&#xff0c;一篇文章让你精通Dubbo的SPI机制 面试Dubbo &#xff0c;却问我和Springcloud有什么区别&#xff1f; 超简单&#xff0c;手把手教你搭建Dubbo工程&#xff08;内附源码&#xff09; Dubbo最核心功能——服务暴露的配置、使用…

2023/07/14 UML图/流程图/泳道图是什么

UML图 UML图中的几种图简介&#xff08;时序图&#xff0c;协作图&#xff0c;状态图&#xff0c;活动图&#xff0c;对象图&#xff09; 泳道图 适合做这种效果&#xff0c;体现角色关系 流程图 定义 绘制要素 开始/结束&#xff1a;用一个椭圆标识&#xff0c;代表流畅的开…

优维EasyOps产品使用最佳实践:Agent存活性监控

优维EasyOps平台内置Agent存活性监控啦&#xff01; Agent作为自动化/监控底层核心组件&#xff0c;它的可用性直接影响了上层功能的使用&#xff0c;故我们会非常关注它的状态。但如果有网络波动、Agent升级或机器故障等都可能导致Agent异常&#xff0c;这时用户希望这种异常…

初级 - 如何搭建一个Java Web项目 - 记录

目录 序言一、使用 Spring Initializr 创建创建一个Java 项目基本框架的方法1. 新建项目时&#xff0c;安装依赖理解Developer Tools 选项 &#xff01;Web 选项 &#xff01; 其他选项具体详情请最下面的参考链接&#xff0c;这里就不一一列举了&#xff0c;只筛选出笔者当前需…

科技政策 | 国家网信办等七部门联合公布《生成式人工智能服务管理暂行办法》

文 | BFT机器人 近日&#xff0c;国家网信办联合国家发展改革委、教育部、科技部、工业和信息化部、公安部、广电总局公布《生成式人工智能服务管理暂行办法》&#xff08;以下称《办法》&#xff09;&#xff0c;自2023年8月15日起施行。国家互联网信息办公室有关负责人表示&a…

零代码编程:用ChatGPT自动登陆微信公众号后台

要实现微信公众号后台自动登陆&#xff0c;可以使用ChatGPT来编写Python代码实现。 微信公众平台账号密码登陆&#xff0c;要先点击“使用账号登录”&#xff0c;源代码是&#xff1a;<a href"javascript:;" class"login__type__container__select-type"…

Python自动化之pytest常用插件

目录 1、失败重跑 pytest-rerunfailures 2、多重校验 pytest-assume 3、设定执行顺序 pytest-ordering 4、用例依赖&#xff08;pytest-dependency&#xff09; 5.分布式测试(pytest-xdist) 6.生成报告&#xff08;pytest-html&#xff09; 1、失败重跑 pytest-rerunfailu…

web 前端 Day 4

盒子模型 <style>div {width: 300px;height: 300px;background-color: pink;padding-left: 4px; 左侧内边距border: 3px solid red;margin: 50px;}</style> padding 内边距 </head> ​ <body> ​<div>cfdaffshydghjgdjdnjjjjjjjjjjjjjjj&l…

springboot网吧管理系统

着科学技术发展&#xff0c;电脑已成为人们生活中必不可少的生活办公工具&#xff0c;在这样的背景下&#xff0c;网络技术被应用到各个方面&#xff0c;为了提高办公生活效率&#xff0c;网络信息技术飞速发展。在这样的背景下人类社会进入了全新的信息化的时代。网吧管理一直…

Jenkins持续集成项目实践 —— 基于Python Selenium自动化测试(二)

上一篇讲了如何搭建jenkins&#xff0c;这篇主要讲&#xff0c;怎么将自动化代码与jenkins衔接起来 jenkins上运行的两种方式&#xff1a; 第一种&#xff0c;在jenkins上面运行本地代码&#xff0c;操作如下: 新建项目&#xff1a;项目名称根据自己项目情况填写并选择自由模…

【C语言初阶(16)】操作符2

文章目录 Ⅰ关系操作符Ⅱ 逻辑操作符⒈操作符介绍⒉短路求值 Ⅲ 条件操作符Ⅳ 逗号表达式Ⅴ 下标引用、函数调用和结构成员⒈[ ] 下标引用操作符⒉( ) 函数调用操作符⒊结构体成员访问操作符 Ⅵ 表达式求值⒈隐式类型转换&#xff08;整型提升&#xff09;⒉算术转换⒊操作符的…

精品项目源码第52期运动会管理系统(代号V052)

精品项目源码第52期运动会管理系统(代号V052) 大家好&#xff0c;小辰今天给大家介绍一个运动会管理系统&#xff0c;演示视频公众号&#xff08;小辰哥的Java&#xff09;对号查询观看即可 文章目录 精品项目源码第52期运动会管理系统(代号V052)难度指数&#xff08;中高等&…

uboot、kernel启动过程分析

00、uboot的宏观启动 第1种&#xff1a;bootROM读取SPL到片内RAM&#xff0c;SPL初始化DDR&#xff0c;SPL把uboot程序copy到DDR&#xff0c;uboot启动进行必要外设初始化、自我拷贝、重定位等。 第2种&#xff1a;bootROM直接读取uboot的头部信息&#xff08;IVT、DCD&#xf…