VideoCapture()摄像机索引和QCAMeranfo.availableCameras()索引不匹配

2024-07-08 10:55:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到一个摄像机的列表,以知道给定它们的名字我需要访问哪一个。然而,我用Qt的QCameraInfo.availableCameras()得到的列表与我提供给cv2.VideoCapture()的索引似乎并不总是匹配,因此如果我在索引0处有一个名为"CAM1"的摄像头,如果我有VideoCapture(0),我就不会访问"CAM1"

为什么以及如何解决这个问题

import cv2
from PySide2.QtMultimedia import QCameraInfo

camera_list = []
index = 0

for cam in QCameraInfo.availableCameras():
    camera_list.append([index, cam.description()])
    index += 1

print(camera_list)

camera = cv2.VideoCapture(0)

Tags: import列表indexqt名字cv2listcamera
1条回答
网友
1楼 · 发布于 2024-07-08 10:55:28

因此,问题在于Windows有多个摄像头后端,OpenCV使用MSMF后端,而Qt使用COM接口(名为DirectShow),后端有不同的索引。通过使用cv2.CAP_DSHOW提供了一种解决方案。您可以执行cv2.VideoCapture(index + cv2.CAP_DSHOW)来修复该问题

相关问题 更多 >

    热门问题