python - 无法使用 python cv2 在 Windows 上同时从两台摄像机(通过一个集线器)捕获帧
问题描述
当尝试同时从两台摄像机(使用单个 USB 集线器)捕获帧时,只有一台摄像机可以返回有效帧,另一台将返回无。当使用一台外置摄像头和笔记本电脑的内置摄像头时,它工作正常。
完全相同的代码和硬件在 Ubuntu 系统上运行良好。所以可能是Windows或其驱动程序有问题,或者使用集线器有问题(可能是带宽问题,但不是电源问题,因为集线器有外部电源)
import cv2
import numpy as np
from multiprocessing import Process
def show(camera_id):
cap = cv2.VideoCapture(camera_id)
cap.set(3,640)
cap.set(4,480)
cap.set(cv2.CAP_PROP_FPS, 30)
while True:
ret, frame = cap.read()
cv2.imshow('test', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
p1 = Process(target=show, args=(0,))
p2 = Process(target=show, args=(1,))
p1.start()
p2.start()
解决方案
推荐阅读
- amazon-web-services - UnsupportedFileSystemException:方案 s3 没有文件系统
- r - 如何在 R 中拟合 2d 数据的周期性趋势?
- r - 如何在 R 中的箱形图或 QQ 图中对 X 轴进行排序?
- c - 合并 Win32 的虚拟分配占位符
- java - 如何从 Java 中的 ArrayList 中删除重复对?
- mysql - 从谷歌云中的数据框列创建 MySQL 表
- python - 如何使用熊猫创建从 csv 文件动态更新的折线图
- java - Intellij 无法识别包
- javascript - 在运行时设置@Input 的`type`:Angular & typescript
- .net - dotnet pack 生成一个未应用 copyToOutput 的包