我是 LINUX 的初学者,如果我的问题不是最好的,我很抱歉。我有一个使用 OpenCV lib 的 c++ 应用程序。此应用程序在启动时通过服务运行(使用 systemctl)。我的应用需要作为参数,即 USB 摄像头设备的 ID。我有 2 个 USB 摄像头。当我关闭这些设备时, ls /dev/video* 的输出是:
/dev/video1
如果我插入设备, ls /dev/video* 的输出是:
/dev/video0
/dev/video1
/dev/video2
所以,我找到了 USB 摄像头设备,现在,我知道如何运行我的 C++ 应用程序:
./my_app 0 2
这是我的问题:我的应用程序在每次启动时自动运行,无需插入/关闭我的相机设备,因此我无法找到这些 ID(在本例中为 0 和 2)。每次重新启动时,这些 id 都不同。
仅找出 USB 摄像头设备的规则是什么?我的操作系统:Ubuntu 18.04 LTS 我的主板:Nvidia Jetson Tx2(它有一个我不想使用的集成摄像头)
编辑:lsusb 的输出:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 03f0:094a Hewlett-Packard Optical Mouse [672662-001]
Bus 001 Device 004: ID 258a:0001
Bus 001 Device 039: ID 0ac8:0346 Z-Star Microelectronics Corp.
Bus 001 Device 038: ID 0ac8:0346 Z-Star Microelectronics Corp.
Bus 001 Device 037: ID 14cd:8601 Super Top
Bus 001 Device 002: ID 14cd:8601 Super Top
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
我找到了最简单的解决方案,使用下一个命令:
这是输出:
之后,我编写了一个脚本来只获取 USB 摄像头设备的 id: