草庐IT

【GStreamer 】2-ubuntu v4l2-ctl 查看USB 相机基本参数

机器人虎哥 2023-04-04 原文

        v4l2是Video4linux2的简称,是linux中关于视频设备的内核驱动,在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头设备文件位置是/dev/video0。V4L2在设计时,是要支持很多广泛的设备的,它们之中只有一部分在本质上是真正的视频设备。

        因为我们这篇文章不涉及内核部分摄像头驱动的实现,大致可以简单说下,内核部分的实现分两部分:

1.我们要根据摄像头的种类,实现具体的摄像头传感器的驱动,这里可能有一些数据和控制的通信总线的协议。

2.然后这个具体的驱动需要适配这个v4l2这个框架,然后向用户层映射成一个字符设备文件。

        而我们的主题就是对这个设备文件进行操作,这就是应用层该做的事。

目录

1 v4l2-ctl 常用命令介绍:

2 查看系统识别的USB 相机设备:

3 显示测试----需要桌面终端的配合

4 ubuntu下使用v4l2-ctl查看USB摄像头参数

4.1 查看可被调用的设备

4.2 查看摄像头所支持的指定格式的分辨率

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

4.4 相机的曝光增益查询

4.5 修改增益参数

4.6 相机参数说明


1 v4l2-ctl 常用命令介绍:

#List all video devices:
v4l2-ctl --list-devices
​
#List supported video formats and resolutions of default video device 
v4l2-ctl --list-formats-ext
​
#List supported video formats and resolutions of a specific video device:
v4l2-ctl --list-formats-ext --device path/to/video_device
#eg:
v4l2-ctl --list-formats-ext --device /dev/video0
​
#Get all details of a video device:
v4l2-ctl --all --device path/to/video_device
#eg:
v4l2-ctl --all --device /dev/video0
​
#Capture a JPEG photo with a specific resolution from video device:
v4l2-ctl --device path/to/video_device --set-fmt-video=width=width,height=height,pixelformat=MJPG --stream-mmap --stream-to=path/to/output.jpg --stream-count=1
#eg:
v4l2-ctl --device /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=MJPG --stream-mmap --stream-to=/home/nvidia/Pictures/video0-output.jpg --stream-count=1
​
#Capture a raw video stream from video device:
v4l2-ctl --device path/to/video_device --set-fmt-video=width=width,height=height,pixelformat=format --stream-mmap --stream-to=path/to/output --stream-count=number_of_frames_to_capture
#eg:
v4l2-ctl --device /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=MJPG --stream-mmap --stream-to=/home/nvidia/Pictures --stream-count=10
​
#List all video device's controls and their values:
v4l2-ctl --list-ctrls --device /path/to/video_device
#eg:
v4l2-ctl --list-ctrls --device /dev/video0

2 查看系统识别的USB 相机设备:

ls /dev/video*

 
ls /dev/v*

 

 

3 显示测试----需要桌面终端的配合

cheese -d /dev/video0

 

4 ubuntu下使用v4l2-ctl查看USB摄像头参数

v4l2-ctl -d  /dev/video0 --all

如果没有相关命令,请安装

v4l2-ctl --all -d /dev/video0查看相机参数时报错:

v4l2-ctl :command not found

手动安装:

sudo apt-get install v4l-utils

相机详细信息(我自己的):

v4l2-ctl -d  /dev/video0 --all
v4l2-ctl --list-ctrls --device /dev/video0
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast 0x00980901 (int)    : min=0 max=64 step=1 default=32 value=32
                     saturation 0x00980902 (int)    : min=0 max=128 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-40 max=40 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=72 max=500 step=1 default=100 value=100
                           gain 0x00980913 (int)    : min=0 max=100 step=1 default=0 value=0
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=0 max=16 step=1 default=8 value=8
         backlight_compensation 0x0098091c (int)    : min=0 max=121 step=121 default=0 value=121
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=1 max=5000 step=1 default=157 value=157 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1
nvidia@nvidia-desktop:~/Pictures$ v4l2-ctl -d  /dev/video0 --all
Driver Info (not using libv4l2):
    Driver name   : uvcvideo
    Card type     : LRCP  USB2.0
    Bus info      : usb-70090000.xusb-3.4
    Driver version: 4.9.253
    Capabilities  : 0x84200001
        Video 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      : 1280/720
    Pixel Format      : 'MJPG'
    Field             : None
    Bytes per Line    : 0
    Size Image        : 1843789
    Colorspace        : Default
    Transfer Function : Default (maps to Rec. 709)
    YCbCr/HSV Encoding: Default (maps to ITU-R 601)
    Quantization      : Default (maps to Full Range)
    Flags             : 
Crop Capability Video Capture:
    Bounds      : Left 0, Top 0, Width 1280, Height 720
    Default     : Left 0, Top 0, Width 1280, Height 720
    Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 1280, Height 720
Selection: crop_bounds, Left 0, Top 0, Width 1280, Height 720
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=64 step=1 default=32 value=32
                     saturation 0x00980902 (int)    : min=0 max=128 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-40 max=40 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=72 max=500 step=1 default=100 value=100
                           gain 0x00980913 (int)    : min=0 max=100 step=1 default=0 value=0
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=0 max=16 step=1 default=8 value=8
         backlight_compensation 0x0098091c (int)    : min=0 max=121 step=121 default=0 value=121
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=1 max=5000 step=1 default=157 value=157 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1

4.1 查看可被调用的设备

nvidia@nvidia-desktop:~/Workspace/test/06-GStreamer/01-rtsp_ipc_play$ v4l2-ctl --list-devices
LRCP  USB2.0 (usb-70090000.xusb-3):
    /dev/video0

4.2 查看摄像头所支持的指定格式的分辨率

nvidia@nvidia-desktop:~$ sudo v4l2-ctl --list-framesizes=MJPG -d /dev/video0
[sudo] password for nvidia: 
ioctl: VIDIOC_ENUM_FRAMESIZES
    Size: Discrete 1280x720
    Size: Discrete 800x600
    Size: Discrete 640x480
    Size: Discrete 640x360
    Size: Discrete 352x288
    Size: Discrete 320x240

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

nvidia@nvidia-desktop:~/Pictures$ v4l2-ctl --list-formats-ext --device /dev/video0
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'MJPG' (compressed)
    Name        : Motion-JPEG
        Size: Discrete 1280x720
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 800x600
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 640x480
            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)
​
    Index       : 1
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUYV 4:2:2
        Size: Discrete 1280x720
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 800x600
            Interval: Discrete 0.050s (20.000 fps)
        Size: Discrete 640x480
            Interval: Discrete 0.040s (25.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)
sudo v4l2-ctl -d /dev/video0 --list-formats//查看当前摄像头支持的视频压缩格式
sudo v4l2-ctl -d /dev/video0 --list-formats-ext//查看当前摄像头支持的分辨率和帧速率
sudo v4l2-ctl -d /dev/video0 --set-parm=30//设置帧率
sudo v4l2-ctl --list-framesizes=MJPG -d /dev/video0//查看摄像头所支持的分辨率
sudo v4l2-ctl --set-fmt-video=width=320,height=240,pixelformat=YUYV

sudo v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=YUYV
sudo v4l2-ctl -d /dev/video0 --set-parm=30//设置帧率

sudo v4l2-ctl --set-fmt-video=width=1280,height=720,pixelformat=MJPG

4.4 相机的曝光增益查询

nvidia@nvidia-desktop:~/Workspace/test/captu$ v4l2-ctl -d /dev/video0 --list-ctrls
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast 0x00980901 (int)    : min=0 max=64 step=1 default=32 value=32
                     saturation 0x00980902 (int)    : min=0 max=128 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-40 max=40 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=72 max=500 step=1 default=100 value=100
                           gain 0x00980913 (int)    : min=0 max=100 step=1 default=0 value=0
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=0 max=16 step=1 default=8 value=8
         backlight_compensation 0x0098091c (int)    : min=0 max=121 step=121 default=0 value=121
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=1 max=5000 step=1 default=157 value=157 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1

4.5 修改增益参数

v4l2-ctl --device=/dev/video0 --set-ctrl=exposure_auto=1
v4l2-ctl --device=/dev/video0 --set-ctrl=exposure_absolute=200

4.6 相机参数说明

brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=-40 value=20
                       contrast 0x00980901 (int)    : min=0 max=100 step=1 default=50 value=100//对比度
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=50 value=50//饱和度
                            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=2 value=2
      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=50 value=50//锐度
         backlight_compensation 0x0098091c (int)    : min=0 max=2 step=1 default=0 value=0//背光补偿
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=0
                     focus_auto 0x009a090c (bool)   : default=1 value=0
v4l2-ctl --device=/dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=0

有关【GStreamer 】2-ubuntu v4l2-ctl 查看USB 相机基本参数的更多相关文章

  1. ruby-on-rails - 有没有办法在 Rails 中以编程方式查看(或打印)方法定义? - 2

    假设我在我的Rails应用中某处定义了一个名为bla的函数。在ruby​​或rails中有没有一种方法可以动态/以编程方式打印用于定义该函数的代码?例如:defblaputs"HiThere"end然后如果我调用一个函数,例如get_definition:putsget_definition(:bla)这会打印出来"puts\"HiThere\""有规范的方法吗?我以前实际上不需要这样做,而且我知道这在Rails中并不是很常见的做法。我也不想使用元(反射)编程定义我的方法,然后存储用于定义我的方法的字符串。感谢您的帮助! 最佳答案

  2. ruby-on-rails - Rails with angular 与 Rails pure(查看性能) - 2

    我尝试在Internet上搜索有关使用angularJS进入RubyonRails项目与RubyonRailspure的View性能的信息。我的问题是因为2个月前我开始使用纯AngularJS,现在我需要将AngularJS集成到一个新项目中,但需要展示使用带有RubyonRails的AngularJS呈现View的性能如何,并消除对RubyonRails的负担.例如:带Rails的Angular:使用RubyonRails获取数据(从数据库或GET请求),将信息发送到file.js.erb并使用AngularJS操作数据并显示带有解析数据的View。纯粹的Rails:(自然流程)使用

  3. ruby - 如何在 watir-webdriver 中查看应用于 HTML 元素的 CSS 样式? - 2

    我正在使用watir-webdriver并试图检查HTML元素的背景颜色。问题是背景颜色是在CSS中设置的,而不是在HTML标签中设置的。有没有办法使用watir-webdriver读取CSS值? 最佳答案 是的,使用样式方法例子:require'watir-webdriver'b=Watir::Browser.start'minesweeper.github.com'putsb.div(:id=>'g1minesRemaining100s').style'background-image'

  4. ruby-on-rails - 查看列值是否更新 - 2

    我有一个带有验证方法的复杂用户模型before_validation_on_update:geocode_places每次发生更新时,此验证都会对我的用户表中的“地点”列进行地理编码。问题是这个验证需要相当长的时间。有什么方法可以只在places列更新时调用此验证?有点像“before_validation_on_column_update”可以这么说.. 最佳答案 有一整套方法可以做到这一点。例如,self.places_changed?应该有效。检查thedocs了解更多。 关于ru

  5. L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误 - 2

    废话不多先看bug解决方案在下面!!!!启动服务查看服务是否开启首先我的电脑-右键-管理-服务和应用程序-服务-找到IPsecPolicyAgent-右键属性-启动方式改为自动,并重启服务,如下图打开设置-更改适配器选项如下图点击连接失败的连接-右键-属性-安全-允许使用这些协议编辑注册表按Ctrl+R打开命令行窗口输入regedit打开注册表输入下面命令进入以下页面HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters如下图在右侧编辑菜单上,鼠标右键新建,然后单击DWORD(32)位值。键入Prohibit

  6. ruby-on-rails - Ruby On Rails 4.2 的可视化日志查看器 - 2

    我以前在Laravel4上工作过,它有一个很棒的日志查看器工具laravellogviewer查看demo我正在寻找与Rubyonrails4.2非常相似的东西,如果你们知道Rails4.2的任何好的可视化日志记录GEM,请告诉我..从代码我需要记录不同的日志级别,这个工具应该直观地组织我的日志,谢谢.. 最佳答案 这应该可以帮助您入门https://github.com/shadabahmed/logstasher如其所说Thisgemisheavilyinspiredfromlograge,butit'sfocusedonone

  7. 关于ES集群信息的一些查看 - 2

    文章目录查看ES信息查看节点信息查看分片信息实际场景下ES分片及副本数量应该怎么分关于ES的灵活使用查看ES信息查看版本kibana:GET/查看节点信息GET/_cat/nodes?v解释:ip:集群中节点的ip地址;heap.percent:堆内存的占用百分比;ram.percent:总内存的占用百分比,其实这个不是很准确,因为buff/cache和available也被当作使用内存;cpu:cpu占用百分比;load_1m:1分钟内cpu负载;load_5m:5分钟内cpu负载;load_15m:15分钟内cpu负载;node.role:上图的dilmrt代表全部权限master:*代表

  8. linux查看es节点使用情况,elasticsearch(es) 如何查看当前集群中哪个节点是主节点(master) - 2

    elasticsearch查看当前集群中的master节点是哪个需要使用_cat监控命令,具体如下。查看方法es主节点确定命令,以kibana上查看示例如下:GET_cat/nodesv返回结果示例如下:ipheap.percentram.percentcpuload_1mload_5mload_15mnode.rolemastername172.16.16.188529952.591.701.45mdi-elastic3172.16.16.187329950.990.991.19mdi-elastic2172.16.16.231699940.871.001.03mdi-elastic4172

  9. ruby-on-rails - 如何查看对 ActiveResource 请求的 HTTP 响应? - 2

    我正在尝试调试不工作的ActiveResource调用。查看ActiveResource发出的请求的HTTP响应的最佳方式是什么? 最佳答案 Monkey修补连接以启用Net::HTTPDebug模式。参见https://gist.github.com/591601-我写它就是为了解决这个问题。将此要点添加到您的Rails应用程序将为您提供Net::HTTP.enable_debug!和Net::HTTP.disable_debug!可以用来打印调试信息。Net::HTTPDebug模式是不安全的,不应在生产中使用,但对于调试来说非

  10. STM32 OTA应用开发——通过USB实现OTA升级 - 2

    STM32OTA应用开发——通过USB实现OTA升级目录STM32OTA应用开发——通过USB实现OTA升级前言1环境搭建2功能描述3BootLoader的制作4APP的制作5烧录下载配置6运行测试结束语前言什么是OTA?百度百科:空中下载技术(Over-the-AirTechnology;OTA),是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术。经过公网多年的应用与发展,已十分成熟,网络运营商通过OTA技术实现SIM卡远程管理,还能提供移动化的新业务下载功能。实际上,现在我们所说的OTA比百度百科的定义还要更广泛,OTA的形式已经不再局限于手机和SIM卡,只要涉及

随机推荐