在 Python 中将 USB 视频捕获设备友好名称与 OpenCV 端口号相关联

2024-04-02

我想在 Windows 平台上使用 Python 获取外部 USB 视频捕获设备的友好名称和 USB 端口号。我正在使用 OpenCV 从 USB 捕获设备捕获视频。 OpenCV 将 USB 端口称为“-1”(找到的第一个工作摄像头)、“0”(对我来说,这是网络摄像头)以及“1”、“2”等,用于外部 USB 视频捕获设备( EasyCap、Hauppauge USB Live-2 等)。以下是在 OpenCV 中连接到网络摄像头的一行示例:

cap = cv2.VideoCapture(0)

我有三个外部视频捕获设备和一个网络摄像头。下面是我的代码,成功显示了这些设备的友好名称(我不确定这是否适用于每个 USB 视频捕获设备):

import wmi
c = wmi.WMI()
wql = "Select * From Win32_USBControllerDevice"
for item in c.query(wql):
    a = item.Dependent.PNPClass
    b = item.Dependent.Name.upper()
    if (a.upper() == 'MEDIA' or a.upper() == 'CAMERA') and 'AUDIO' not in b:
        print(item.Dependent.Name)

结果是:

Integrated Webcam
Hauppauge USB-Live2
USB TV Tuner
USB Video Device

如果我将打印语句替换为,我可以打印所有设备信息

print(item.Dependent)

然后我得到以下结果:

instance of Win32_PnPEntity
{
        Caption = "Integrated Webcam";
        ClassGuid = "{ca3e7ab9-b4c3-4ae6-8251-579ef933890f}";
        CompatibleID = {"USB\\Class_0e&SubClass_03&Prot_00", "USB\\Class_0e&SubClass_03", "USB\\Class_0e"};
        ConfigManagerErrorCode = 0;
        ConfigManagerUserConfig = FALSE;
        CreationClassName = "Win32_PnPEntity";
        Description = "USB Video Device";
        DeviceID = "USB\\VID_0BDA&PID_5686&MI_00\\6&153A3DF0&0&0000";
        HardwareID = {"USB\\VID_0BDA&PID_5686&REV_5729&MI_00", "USB\\VID_0BDA&PID_5686&MI_00"};
        Manufacturer = "Microsoft";
        Name = "Integrated Webcam";
        PNPClass = "Camera";
        PNPDeviceID = "USB\\VID_0BDA&PID_5686&MI_00\\6&153A3DF0&0&0000";
        Present = TRUE;
        Service = "usbvideo";
        Status = "OK";
        SystemCreationClassName = "Win32_ComputerSystem";
        SystemName = "MY-LAPTOP";
};


instance of Win32_PnPEntity
{
        Caption = "Hauppauge USB-Live2";
        ClassGuid = "{4d36e96c-e325-11ce-bfc1-08002be10318}";
        CompatibleID = {"USB\\Class_ff&SubClass_ff&Prot_ff", "USB\\Class_ff&SubClass_ff", "USB\\Class_ff"};
        ConfigManagerErrorCode = 0;
        ConfigManagerUserConfig = FALSE;
        CreationClassName = "Win32_PnPEntity";
        Description = "Hauppauge USB-Live2";
        DeviceID = "USB\\VID_2040&PID_C200&MI_01\\6&19EA708B&0&0001";
        HardwareID = {"USB\\VID_2040&PID_C200&REV_4001&MI_01", "USB\\VID_2040&PID_C200&MI_01"};
        Manufacturer = "Hauppauge";
        Name = "Hauppauge USB-Live2";
        PNPClass = "MEDIA";
        PNPDeviceID = "USB\\VID_2040&PID_C200&MI_01\\6&19EA708B&0&0001";
        Present = TRUE;
        Service = "hcw10bda";
        Status = "OK";
        SystemCreationClassName = "Win32_ComputerSystem";
        SystemName = "MY-LAPTOP";
};


instance of Win32_PnPEntity
{
        Caption = "USB TV Tuner";
        ClassGuid = "{4d36e96c-e325-11ce-bfc1-08002be10318}";
        CompatibleID = {"USB\\Class_FF&SubClass_00&Prot_FF", "USB\\Class_FF&SubClass_00", "USB\\Class_FF"};
        ConfigManagerErrorCode = 0;
        ConfigManagerUserConfig = FALSE;
        CreationClassName = "Win32_PnPEntity";
        Description = "USB TV Tuner";
        DeviceID = "USB\\VID_1B71&PID_3002\\300000000002";
        HardwareID = {"USB\\VID_1B71&PID_3002&REV_0100", "USB\\VID_1B71&PID_3002"};
        Manufacturer = "Active Development Co., Ltd.";
        Name = "USB TV Tuner";
        PNPClass = "MEDIA";
        PNPDeviceID = "USB\\VID_1B71&PID_3002\\300000000002";
        Present = TRUE;
        Service = "X86BDA";
        Status = "OK";
        SystemCreationClassName = "Win32_ComputerSystem";
        SystemName = "MY-LAPTOP";
};


instance of Win32_PnPEntity
{
        Caption = "USB Video Device";
        ClassGuid = "{ca3e7ab9-b4c3-4ae6-8251-579ef933890f}";
        CompatibleID = {"USB\\Class_0e&SubClass_03&Prot_00", "USB\\Class_0e&SubClass_03", "USB\\Class_0e"};
        ConfigManagerErrorCode = 0;
        ConfigManagerUserConfig = FALSE;
        CreationClassName = "Win32_PnPEntity";
        Description = "USB Video Device";
        DeviceID = "USB\\VID_1E4E&PID_701F&MI_00\\6&3543E1D5&0&0000";
        HardwareID = {"USB\\VID_1E4E&PID_701F&REV_0100&MI_00", "USB\\VID_1E4E&PID_701F&MI_00"};
        Manufacturer = "Microsoft";
        Name = "USB Video Device";
        PNPClass = "Camera";
        PNPDeviceID = "USB\\VID_1E4E&PID_701F&MI_00\\6&3543E1D5&0&0000";
        Present = TRUE;
        Service = "usbvideo";
        Status = "OK";
        SystemCreationClassName = "Win32_ComputerSystem";
        SystemName = "MY-LAPTOP";
};

这些结果中一定有一些内容表明外部设备连接到的端口,但我没有看到它。关于如何将友好名称与 OpenCV 识别的端口号关联起来的建议?


我找到了一个效果很好的解决方案。CV-camera-finder可以在这里找到:https://github.com/pvys/CV-camera-finder https://github.com/pvys/CV-camera-finder.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中将 USB 视频捕获设备友好名称与 OpenCV 端口号相关联 的相关文章

  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • 野田时间:Period.Between() 返回错误的天数?

    鉴于下面的代码片段 为什么最后四个输出周期相同 我希望这些行的天数部分为 4 3 2 1 而不是 4 4 4 4 这是一个错误还是我遗漏了一些明显的东西 已经很晚了 我也累了 所以很可能是后者 我使用的是Noda Time 1 2 0 fo
  • 阻止 robots.mouseMove 生成​​ MouseEvent?

    我有一个 3D 游戏 每次移动光标时 我希望它重置到中间 问题是 robots mouseMove 调用 MouseEvent 它确实有意义 并重置位置 所以我无法旋转 谢谢你 我更喜欢如下代码 component removeMouseL
  • 如何重写对象ArrayList的ToString方法?

    class Person public String firstname public String lastname Person p1 new Person Jim Green Person p2 new Person Tony Whi
  • 了解 STG

    GHC 的设计基于 STG 它代表 无脊椎 无标签的 G 机器 现在G machine显然是 图缩减机 的缩写 它定义了惰性是如何实现的 未评估的 thunk 存储为表达式树 执行程序涉及reducing这些都归结为正常形式 Atree是一
  • 将字符串编码为十六进制

    我有将字符串转换为十六进制的函数 function encode str str encodeURIComponent str split join return str toLowerCase example 守护村子 alert enc
  • 在vim中搜索并替换选定的文件路径

    我经常处理内部充满文件路径的文件 我希望能够在可视模式下快速选择我的文件路径并将其替换为其他文件路径 例如我有这样的文件 balvadsd mnt Windows Documents and Settings stuff file exe
  • VBA - CallByName 不接受变体参数

    解决方案 只需在 CallByName 语句中的 Value 两边加上括号即可强制对其求值 Ex CallByName MobClass TargetData vbLet Value 感谢来自另一篇文章的 Rory 我可能会删除该文章 因为
  • 使用蒙特卡罗模拟计算 π 的局限性

    我问过一个与此非常相似的问题 所以我会在最后提到以前的解决方案 我有一个website https monte carlo sjorsvanholst nl使用客户端的 CPU 计算 同时将其存储在服务器上 到目前为止我已经得到 701 7
  • 在客户端 SAPUI5 中仅过滤 sap.m.List

    我正在寻找仅在客户端过滤列表 并让其他类似表等在服务器端过滤 是否有任何选项可以添加到列表中以在客户端进行过滤 问候 您可以使用操作模式v2 ODataModel 的参数 该参数可以设置为模型级别 https openui5 hana on
  • 如何应用 django 补丁

    我想对这个错误应用补丁 http code djangoproject com ticket 13095 http code djangoproject com ticket 13095 但我以前从未这样做过 我不知道从哪里开始 谁能给我指
  • 如何使用 Spring JPA 仅获取实体的选定属性?

    我在我的项目中使用 Spring Boot 1 3 3 RELEASE 和 Hibernate JPA 我的实体看起来像这样 Data NoArgsConstructor Entity Table name rule public clas
  • 读取 jar 文件中的 zip 文件

    之前我们的 Web 应用程序中有一些 zip 文件 我们想要解析 zip 文件中的特定文本文档 这不是问题 URL url getClass getResource zipfile ZipFile zip new ZipFile url g
  • 序列或批处理项目 DataGridView

    我有一个包含 940000 行的大型 DataGridView 哎呀 通过解析 csv 文件填充 DataGridView 有一个名为序列的列 编号为 1 到 940000 我试图做的是重新编号序列以溢出到序列中DataGridView 中
  • Angular Reactive Form 提交并明确验证

    我有一个反应形式
  • 如何监控SciPy.odeint的进程?

    SciPy 可以通过 scipy integrate odeint 或其他包求解 ode 方程 但它在函数完全求解后给出结果 但是 如果 ode 函数非常复杂 程序将花费大量时间 一两天 才能给出整个结果 那么我如何监控求解方程的步骤 当方
  • 将动态添加到 IList 失败

    在下面的代码示例中调用l Add s and c Add s 是成功的 但对于泛型时会失败IList
  • com.jcraft.jsch.JSchException:java.net.ConnectException:连接被拒绝:连接

    我知道有重复的 gt gt gt 从重复的 gt gt gt 复制 只要您的本地计算机有一个正在运行的 SSH 服务器 它说 只要你的本地机器有运行的 SSH 服务器 但我不知道如何运行 SSH 服务器 我打开我的腻子 双击它 不确定这是否
  • utf-8特殊字符不显示[重复]

    这个问题在这里已经有答案了 我将网站从本地测试服务器移至 NameCheap 共享主机 现在我遇到了问题 某些页面无法正确显示 utf 8 特殊字符 而是显示问号 所有页面均采用 utf 8 编码 所有数据库表也是如此 奇怪的是 有些页面可
  • 无法加载 libgdx 的共享库 box2d

    我有一个使用 Maven 构建的 libGDX 项目 它过去运行良好 但最近它停止工作 因为 libGDX 将 box2d 移动为扩展 我将扩展作为依赖项添加到项目的核心 就像任何其他依赖项一样
  • 在 Python 中将 USB 视频捕获设备友好名称与 OpenCV 端口号相关联

    我想在 Windows 平台上使用 Python 获取外部 USB 视频捕获设备的友好名称和 USB 端口号 我正在使用 OpenCV 从 USB 捕获设备捕获视频 OpenCV 将 USB 端口称为 1 找到的第一个工作摄像头 0 对我来