在树莓派上使用多个USB摄像头时,如何确定各个摄像头所对应的id?
比如,当有两个摄像头时,我尝试一个为cv2.VideoCapture(0),一个为cv2.VideoCapture(1),通过看捕获的图像,可以确定各摄像头的id,但这个顺序不是固定的,树莓派在通电的时候,哪一个摄像头先通电的,哪一个就是0,下一个就是1,2,3,4,5…
但这样毕竟很被动,在我们的代码上就很麻烦了,没办法确定摄像头是那一个!
在终端上输入lsusb
lsusb
我这里使用了2个USB摄像头,通过插拔,确定摄像头的ID是哪个!
将端口重映射到新的固定的名字,并且设置其权限为可读。使用对应的id端口映射到固定的名字上(看不懂无所谓,按教程来,往下走)
终端输入:
sudo vi /etc/udev/rules.d/rplidar.rules
1.按i,进入编辑模式
2.复制以下代码,修改ID,自定义设备的名字
KERNEL=="video*", ATTRS{idVendor}=="038f", ATTRS{idProduct}=="6001", MODE:="0777", SYMLINK+="people_video"
3.按Esc,输入 :wq (保存退出)
创建生效后重新插拔一下USB摄像头
ls -l /dev |grep video
平时我们是这样子使用的:
cap = cv2.VideoCapture(0) # 打开USB摄像头对象
现在精准打开某个摄像头
cap = cv2.VideoCapture("/dev/people_video") # 打开人体识别摄像头
cap = cv2.VideoCapture("/dev/goods_video") # 打开物体识别摄像头