【发布时间】:2025-12-23 16:05:06
【问题描述】:
我有:带有内置摄像头的 Linux 笔记本电脑、2 个其他摄像头、基于 OpenCV 的程序。
我需要:将这两个摄像头的设备号自动传递给程序。
在 OpenCV 中,您使用videoCapture.open(n); 打开相机,其中videoCapture 是cv::VideoCapture 的对象,n 是您要打开的相机的设备号。我的程序使用两个网络摄像头。这个问题的OpenCV部分到这里就结束了。
通常这个n 是硬编码或由用户手动传递的。我想编写一个脚本来自动检测两个所需摄像机的设备号。但内置摄像头是障碍。
加载时,Linux 默认内置摄像头的设备号为0。两个连接的 USB 摄像头相应地获得数字 1 和 2。当您重新启动笔记本电脑时,您很可能会混淆所有数字,例如内置摄像头 - 1、0 和 2 - 用于 USB 摄像头。无论如何,当我切换平台并在没有内置摄像头的桌面上执行程序时,我必须更改代码中的设备号。
我想我可以编写 sh 脚本来解析 lsusb | grep Logitech 的输出(这两个 USB 网络摄像头是罗技的)并根据 USB 总线编号获取设备编号,但是重启会阻碍这一点。
对于我可以检查问题的任何想法和想法,我将不胜感激。
【问题讨论】: