【问题标题】:VideoCapture() camera index and QCameraInfo.availableCameras() index do not matchVideoCapture() 相机索引和 QCameraInfo.availableCameras() 索引不匹配
【发布时间】:2020-05-17 15:40:58
【问题描述】:

我尝试获取一个摄像头列表,以根据它们的名称了解我需要访问哪个摄像头。但是,我使用 Qt 的QCameraInfo.availableCameras() 获得的列表与我提供给cv2.VideoCapture() 的索引似乎并不总是匹配,所以如果我有一个名为"CAM1" 的相机来自QCameraInfo.availableCameras() 在索引0,如果我这样做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)

【问题讨论】:

    标签: python opencv pyside2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-01
      • 2015-07-11
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2021-07-09
      • 2017-06-26
      相关资源
      最近更新 更多