我试图得到一个摄像机的列表,以知道给定它们的名字我需要访问哪一个。然而,我用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)
因此,问题在于Windows有多个摄像头后端,OpenCV使用MSMF后端,而Qt使用COM接口(名为DirectShow),后端有不同的索引。通过使用
cv2.CAP_DSHOW
提供了一种解决方案。您可以执行cv2.VideoCapture(index + cv2.CAP_DSHOW)
来修复该问题相关问题 更多 >
编程相关推荐