<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    Ubuntu下查看USB攝像頭設備

    概要

    我們想要從USB攝像頭獲取圖片,然后在opencv中進行處理。

    在用opencv編寫獲取USB攝像頭圖片的代碼之前,我們最好先在Ubuntu下查看一下USB攝像頭的列表與對應的編號。另外我們可以通過v4l查看攝像頭所支持的視頻壓縮格式. 最后我們通過Ubuntu內置的Cheese軟件讀取實時的視頻流數據。

    如果你使用的不是Ubuntu系統,可以跳過此教程。

    keywords Ubuntu 攝像頭 查看USB設備

    1. 查看video設備

    ls查看USB攝像頭列表

    在linux中任何對象都是文件,查看當前是否有攝像頭掛載到Ubuntu上,我們可以執行下面的命令行

    ls -ltrh /dev/video*
    

    OUTPUT

    [email protected]:~$ ls -ltrh /dev/video*
    crw-rw----+ 1 root video 81, 0 3月  28 22:10 /dev/video0
    crw-rw----+ 1 root video 81, 1 3月  28 22:10 /dev/video1
    

    2. 通過video4linux查看設備

    v4l查看USB攝像頭列表

    video4linux(v4l)是一些視頻系統,視頻軟件,音頻軟件的基礎,經常使用在需要采集圖像的場合,如視頻監控,webcam,可視電話,經常應用在embedded linux中,是linux嵌入式開發中經常使用的系統接口。它是linux內核提供給用戶空間的編程接口,各種的視頻和音頻設備開發相應的驅動程序后,就可以通過v4l提供的系統API來控制視頻和音頻設備,也就是說v4l分為兩層,底層為音視頻設備在內核中的驅動,上層為系統提供的API,而對于我們來說需要的就是使用這些系統的API。

    --百度百科 https://baike.baidu.com/item/V4L/10234303?fr=aladdin

    安裝v4l

    sudo apt-get install v4l-utils
    

    通過v4l2查看設備

    v4l2-ctl --list-devices
    

    OUTPUT

    KS-WDR: KS-WDR (usb-0000:00:14.0-1):
        /dev/video0
    

    查看當前攝像頭支持的視頻壓縮格式

    v4l2-ctl -d /dev/video0 --list-formats
    

    OUTPUT

    ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'MJPG' (compressed)
        Name        : Motion-JPEG
    
        Index       : 1
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUYV 4:2:2
    

    可以看到攝像頭,支持兩種格式

    3. V4L + Python 查看設備號

    在python里面我們可以借助v4l-utils 跟python

    #-*- coding: UTF-8 -*-
    '''
    根據設備名稱獲取相機設備號
    
    使用前需要先安裝v4l-utils
    
    Installing v4l-utils (debian) gives one the handy v4l2-ctl command:
    $ v4l2-ctl --list-devices
    
    KS-WDR: KS-WDR (usb-0000:00:14.0-2):
        /dev/video0
    
    H264 USB Camera: USB Camera (usb-0000:00:14.0-4.1):
        /dev/video1
        /dev/video2
    
    所以我們可以根據設備名稱去檢索攝像頭對應的序號
    '''
    from subprocess import PIPE,Popen
    
    def find_cam(cam):
        cmd = ["/usr/bin/v4l2-ctl", "--list-devices"]
        out, err = Popen(cmd, stdout=PIPE, stderr=PIPE).communicate()
        out = out.strip()
        # 降byte類型轉換為string
        # out = str(out)
        for dev_name, dev_idx in [i.split(b"\n\t") for i in out.split(b"\n\n")]:
            if cam in dev_name:
                return dev_idx.decode('utf8')
        return None
    
    if __name__ == "__main__":
        # 這里修改設備名稱
        cam= b"KS-WDR"
        # 尋找設備編號
        dev_idx = find_cam(cam)
        if dev_idx is None:
            print("設備沒有找到")
        else:
            print("設備編號: {}".format(dev_idx))
    

    4. 通過cheese 查看視頻流

    cheese讀入視頻

    cheese是Ubuntu自帶攝像軟件,中文名稱茄子。

    如果你的系統上沒有的話也可以安裝:

    sudo apt-get install cheese
    

    通過cheese 查看視頻流。

    cheese + 設備號

    cheese /dev/video0
    

    cheese功能非常有限, 而且容易崩潰。


    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人