You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过索引编程选取多个同名摄像头?

解决同名摄像头按索引访问的问题

原代码的问题分析

  1. index()方法误用:你尝试的graph.get_input_devices().index(0)是错误操作——index()的作用是查找元素在列表中的位置,而非按索引获取元素。传入0会让它在设备名称列表里寻找值为0的元素,必然找不到。
  2. 同名设备冲突:当多个摄像头名称相同时,index("设备名称")只会返回第一个匹配项的索引,无法区分其他同名设备。

修改后的代码实现

直接通过传入的索引值返回对应设备的索引,同时增加边界检查避免错误:

def getCamera(camera_index):
    graph = FilterGraph()
    devices = graph.get_input_devices()
    print("Camera List: ", devices)
    
    # 校验索引是否在有效范围内
    if 0 <= camera_index < len(devices):
        return camera_index
    else:
        print(f"摄像头索引 {camera_index} 无效,默认使用第一个摄像头")
        return 0

使用方式

调用函数时直接传入目标摄像头的索引(0、1、2分别对应三台设备):

# 获取三台摄像头的索引
cam1_idx = getCamera(0)
cam2_idx = getCamera(1)
cam3_idx = getCamera(2)

原理说明

graph.get_input_devices()返回的设备列表中,每个元素的索引是唯一标识,即使设备名称完全相同,不同索引也对应不同的物理摄像头。直接使用索引即可精准定位到目标设备,无需依赖名称匹配。

内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:02:09