python-3.x 以编程方式选择摄像头

9wbgstp7  于 2023-04-13  发布在  Python
关注(0)|答案(2)|浏览(133)

bounty将在6天后过期。回答此问题可获得+50声望奖励。Felix正在寻找此问题的最新答案

我的程序应该选择三个摄像机,并与每一个拍照。
我现在有以下代码:

def getCamera(camera):
    graph = FilterGraph()
    print("Camera List: ")
    print(graph.get_input_devices())

    #tbd get right Camera

    try:
        device = graph.get_input_devices().index("HD Pro Webcam C920")
    except ValueError as e:
        device = graph.get_input_devices().index("Integrated Webcam")
    return device

上面的代码运行良好。但是我有三个同名的相似相机。
输出:

graph = FilterGraph()
print("Camera List: ")
print(graph.get_input_devices())

是一个列表,其中有三个相机都是相同的名称。我认为它们在一个数组中,我可以使用以下命令选择它们:

device = graph.get_input_devices().index(0)

就像其他数组一样。
但是我只能用Name访问。就像第一个代码示例一样。
我如何使用索引访问摄像机?

wf82jlnq

wf82jlnq1#

您可以使用列表中摄像机的索引来选择它。例如,如果您想选择列表中的第一个摄像机,则可以使用以下代码:

device = graph.get_input_devices().index("HD Pro Webcam C920")

要选择第二个摄影机,请执行以下操作:

device = graph.get_input_devices().index("HD Pro Webcam C920", 1)

要选择第三个摄像头,您可以用途:

device = graph.get_input_devices().index("HD Pro Webcam C920", 2)

**index()**方法中的第二个参数指定搜索的起始索引。

您也可以修改**getCamera()**函数,使其接受一个参数,该参数指定您要使用的摄像机的索引:

def getCamera(camera_index):
    graph = FilterGraph()
    cameras = graph.get_input_devices()
    if camera_index >= len(cameras):
        raise ValueError("Camera index out of range")
    return cameras[camera_index]

for i in range(3):
    camera = getCamera(i)
    #Do something with it
pdsfdshx

pdsfdshx2#

**graph.get_input_devices()**返回一个列表。

与任何列表一样,您始终可以使用方括号符号[ ]访问索引

因此,如果您有3台摄像机,您可以始终对列表中的第1项和第3项执行graph.get_input_devices()[0]graph.get_input_devices()[2]
如果有人好奇,这是来自pygrabber模块的

相关问题