Linux:获取相机设备号

Posted

技术标签:

【中文标题】Linux:获取相机设备号【英文标题】:Linux: getting camera device number 【发布时间】:2014-04-01 14:44:06 【问题描述】:

我有:带有内置摄像头的 Linux 笔记本电脑、2 个其他摄像头、基于 OpenCV 的程序。

我需要:将这两个摄像头的设备号自动传递给程序。

在 OpenCV 中,您使用videoCapture.open(n); 打开相机,其中videoCapturecv::VideoCapture 的对象,n 是您要打开的相机的设备号。我的程序使用两个网络摄像头。这个问题的OpenCV部分到这里就结束了。

通常这个n 是硬编码或由用户手动传递的。我想编写一个脚本来自动检测两个所需摄像机的设备号。但内置摄像头是障碍。

加载时,Linux 默认内置摄像头的设备号为0。两个连接的 USB 摄像头相应地获得数字 12。当您重新启动笔记本电脑时,您很可能会混淆所有数字,例如内置摄像头 - 102 - 用于 USB 摄像头。无论如何,当我切换平台并在没有内置摄像头的桌面上执行程序时,我必须更改代码中的设备号。

我想我可以编写 sh 脚本来解析 lsusb | grep Logitech 的输出(这两个 USB 网络摄像头是罗技的)并根据 USB 总线编号获取设备编号,但是重启会阻碍这一点。

对于我可以检查问题的任何想法和想法,我将不胜感激。

【问题讨论】:

【参考方案1】:

我认为您应该枚举 USB 设备 - 您可以在此处查看有关如何执行此操作的详细信息: Enum USB devices in Linux/C++

关于之前与您类似的问题,请参阅:How to count cameras in OpenCV 2.3?

【讨论】:

以上是关于Linux:获取相机设备号的主要内容,如果未能解决你的问题,请参考以下文章

如何获取IP地址打开球形相机设备并检查是不是连接?

使用相机时如何获取设备的方向?

如何在 Android 设备中获取相机传感器尺寸?

获取android相机设备的视角

在 Unity 中获取真实设备的相机分辨率(即百万像素)

如何从opencv中的捕获设备(相机)获取最新帧