服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - linux usb摄像头设备信息查看方式

linux usb摄像头设备信息查看方式

2023-05-07 16:44eric_pyt@qq.com Linux

这篇文章主要介绍了linux usb摄像头设备信息查看方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

linux usb摄像头设备信息查看

linux下usb摄像头操作,离不开v4l2框架

V4L2是Video for linux2的简称,为linux中关于视频设备的内核驱动。

在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0下。

查看linux 摄像头设备,如果存在有效的摄像头设备,则可以在dev目录下查看

?
1
2
3
eric@eric-PC:/$ ls dev/video* -l
crw-rw----+ 1 root video 81, 0 11月  8 13:37 dev/video0
crw-rw----+ 1 root video 81, 1 11月  8 13:37 dev/video1

也可以查看启动信息,是否存在有效usb摄像头设备

?
1
2
3
4
5
6
7
8
eric@eric-PC:/$ dmesg | grep video
[ 1849.908486] videodev: Linux video capture interface: v2.00
[ 1850.022954] uvcvideo: Found UVC 1.00 device hm1091_techfront (0408:1020)
[ 1850.061899] uvcvideo 1-1:1.0: Entity type for entity Extension 4 was not initialized!
[ 1850.061903] uvcvideo 1-1:1.0: Entity type for entity Extension 3 was not initialized!
[ 1850.061905] uvcvideo 1-1:1.0: Entity type for entity Processing 2 was not initialized!
[ 1850.061907] uvcvideo 1-1:1.0: Entity type for entity Camera 1 was not initialized!
[ 1850.062579] usbcore: registered new interface driver uvcvideo

v4l2-ctl命令查看video设备参数信息,如果提示如下未找到v4l2-ctl命令,则需要安装v4l-utils

?
1
2
3
eric@eric-PC:/dev$ v4l2-ctl -d  /dev/video0 --all
bash: v4l2-ctl:未找到命令  
eric@eric-PC:/dev$ sudo apt-get install v4l-utils
?
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
eric@eric-PC:/$ v4l2-ctl -d  /dev/video0 --all
Driver Info:
        Driver name      : uvcvideo
        Card type        : hm1091_techfront: hm1091_techfr
        Bus info         : usb-0000:02:04.0-1
        Driver version   : 5.4.50
        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      : 1280/720
        Pixel Format      : 'MJPG' (Motion-JPEG)
        Field             : None
        Bytes per Line    : 0
        Size Image        : 1843200
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        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, Flags: 
Selection: crop_bounds, Left 0, Top 0, Width 1280, Height 720, 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=95 step=1 default=0 value=0
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-2000 max=2000 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=100 max=300 step=1 default=100 value=100
           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=7 step=1 default=2 value=2
         backlight_compensation 0x0098091c (int)    : min=0 max=1 step=1 default=1 value=1
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=10 max=2047 step=1 default=384 value=384 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1

有以上信息可以看出,设备支持分辨率1280×720,支持MJPEG格式。

 

linux usb摄像头索引的获取

一般情况下,笔记本自带的摄像头的索引号为0,而通过USB插入的摄像头一般为1(只有两个摄像头的情况下)。

但是,当笔记本插着USB摄像头开机时,有可能USB的索引变为0,如果还是使用原来的索引,便会产生错误或者结果误差。为此,我写了个程序自动获取USB摄像头的索引。

 

原理与实现

在Linux系统下,所有设备的均被当作文件的形式进行管理和交互(不是很懂),而摄像头对应的文件在/sys/class/video4linux/下,而每个摄像头均有name文件记录摄像头的名字。

因此,可以根据该文件得到摄像头的名称,而摄像头所在的文件夹(如video0)可以得到索引。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def get_usb_camera_index():
    # 获取USB摄像头的索引
    camera_path = Path('/sys/class/video4linux/')
    camera_list = list(camera_path.glob('video*'))
    camera_list.sort()
    index = 0
    for i in range(len(camera_list)):
        camera = camera_list[i]
        name_file = camera.joinpath('name')
        with open(name_file, 'r') as f:
            info = f.readline()
            if 'USB' in info:
                index = i
                break
    return index

 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/pyt1234567890/article/details/109558644

延伸 · 阅读

精彩推荐
  • Linuxelementary OS 6 应该改进体验的五个地方

    elementary OS 6 应该改进体验的五个地方

    elementary OS 是一个漂亮的 Linux 发行版,但它适合所有人吗?它们是否有可以做得更好的地方?下面是我的想法。...

    Linux中国7102021-12-27
  • Linuxlinux如何无损调整分区大小

    linux如何无损调整分区大小

    本篇文章主要介绍了linux如何无损调整分区大小,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    叶落阁6502022-01-18
  • LinuxLinux如何使用locate命令查找数据查找指定文件

    Linux如何使用locate命令查找数据查找指定文件

    locate命令是Linux查找命令中的一种,可用于查找数据,使用该命令可以查找指定文件,在locate命令无法查找资源的情况下还可使用find命令,下面为大家介绍...

    Linux技术网6422019-10-21
  • Linux防止Xen VPS用户自己修改IP地址的方法

    防止Xen VPS用户自己修改IP地址的方法

    这篇文章主要介绍了防止Xen VPS用户自己修改IP地址的方法,本文给出了两种方法,分别使用Xen 配置和iptables配置实现,需要的朋友可以参考下 ...

    服务器之家3982019-10-16
  • Linuxlinux操作系统环境变量LANG和NLS_LANG的区别

    linux操作系统环境变量LANG和NLS_LANG的区别

    操作系统环境变量针对语言项设置有几个,我经常设置的是这两个LANG和NLS_LANG。LANG是针对Linux系统的语言、地区、字符集的设置,对linux下的应用程序有效,...

    linux教程网4892019-11-14
  • LinuxLinux下修改文件描述符的大小的方法

    Linux下修改文件描述符的大小的方法

    最近一些朋友问小编Linux下如何修改文件描述符的大小?下面小编将为大家带来的是Linux下修改文件描述符的大小的方法,有需要的朋友一起去看看吧...

    Linux之家6002019-06-04
  • Linuxlinux上TCP connection timeout问题解决办法

    linux上TCP connection timeout问题解决办法

    这篇文章主要介绍了 linux上TCP connection timeout问题解决办法的相关资料,需要的朋友可以参考下...

    raintungli5462022-01-10
  • Linux一文读懂Linux延时队列工作原理

    一文读懂Linux延时队列工作原理

    当进程要获取某些资源(例如从网卡读取数据)的时候,但资源并没有准备好(例如网卡还没接收到数据),这时候内核必须切换到其他进程运行,直到资源准备...

    Linux内核那些事5012021-10-20