python - OpenCV Python : cv2. VideoCapture 只能找到 3 个摄像头中的 2 个,Windows Camera 应用程序找到所有

标签 python opencv camera

我正在尝试使用网络摄像头将 3 个实时捕获帧创建到笔记本电脑的 USB 集线器中。使用 Windows 上的“相机”应用程序,我可以一次更改一个相机源并确认所有 3 个网络摄像头都在工作。但是,我的 OpenCV Python 代码只能找到两个。

(关于 USB 的快速说明 - 它是一个 USB 3.0 集线器,笔记本电脑端口是 USB 3,我什至有一个事件的 USB 母对公电缆连接到笔记本电脑,所以考虑到这个和 Windows 应用程序工作,我通常信任硬件。)

下面我对 cv2.VideoCapture(src) 进行了一些原始测试,结果如下:

cams_test = 10
for i in range(0, cams_test):
    cap = cv2.VideoCapture(i)
    test, frame = cap.read()
    print("i : "+str(i)+" /// result: "+str(test))

第一个参数 test 返回 True/False,具体取决于是否可以读取帧。结果:

i : 0 /// result: True
i : 1 /// result: True
i : 2 /// result: False
i : 3 /// result: False
i : 4 /// result: False
i : 5 /// result: False
i : 6 /// result: False
i : 7 /// result: False
i : 8 /// result: False
i : 9 /// result: False

与我测试的其他示例代码一样,只有 2 个网络摄像头可以在 Python 中注册和显示帧。 Windows 10 相机应用程序让我可以在所有 3 个工作和连接的网络摄像头源之间滚动。

我知道如果我使用有效的 cap,我可以创建多个,例如 3+,cv2.imshow() 帧。我的项目涉及这样做,以显示来自多个摄像头的笔记本电脑上的实时 USB 网络摄像头提要。

感谢任何帮助和建议;也可能对(基于 Python 的)替代解决方案感兴趣。干杯。

最佳答案

拥有两个视频输入设备并不自动意味着它们的 ID 为 0 和 10。尝试通过增加到大约 500 或更多而不是 10 来访问所有摄像机

cams_test = 500
for i in range(0, cams_test):
    cap = cv2.VideoCapture(i)
    test, frame = cap.read()
    if test:
        print("i : "+str(i)+" /// result: "+str(test))

我认为你只是在测试

关于python - OpenCV Python : cv2. VideoCapture 只能找到 3 个摄像头中的 2 个,Windows Camera 应用程序找到所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49663474/

相关文章:

c++ - OpenCV drawCircle 并在圆线上绘制矩形

opencv - 查找非二进制图像的轮廓

android - 我的相机应用程序在打开时崩溃。

android - 当我选择任何第三方相机应用程序时相机 Intent 中出现空指针异常

使用前置摄像头的 Android - 兼容所有设备

python - Web2Py DAL、左连接和运算符优先级

python - 我应该如何在多模块 Python 应用程序中建立和管理数据库连接?

c++ - 如何用 OpenCV 同时显示深度和彩色视频图像?

php - 无法从 PHP 文档执行 Python 脚本

python - 如何从 PySpark 中的字符串获取列表