1、背景
一般情况下,笔记本自带的摄像头的索引号为0,而通过USB插入的摄像头一般为1(只有两个摄像头的情况下)。但是,当笔记本插着USB摄像头开机时,有可能USB的索引变为0,如果还是使用原来的索引,便会产生错误或者结果误差。为此,我写了个程序自动获取USB摄像头的索引。
2、原理与实现
在Linux系统下,所有设备的均被当作文件的形式进行管理和交互(不是很懂),而摄像头对应的文件在/sys/class/video4linux/下,而每个摄像头均有name文件记录摄像头的名字。因此,可以根据该文件得到摄像头的名称,而摄像头所在的文件夹(如video0)可以得到索引。
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